Archive for November 2016

Microsoft Schwachmaten mal wieder at it’s best! Tschüss Einmalcodes

26 November 2016

Wenn ich auf fremden Rechnern unterwegs bin und mit Microsoft Diensten Kontakt aufnehme, dann melde ich mich grundsätzlich mittels des sogenannten Microsoft Einmalcodes an. Dabei gebe ich meine Handynummer an und erhalte dann zum Login eine Nummer per SMS. Dies ist der sogenannte Einmalcode oder Single Use Code.

Scheinbar ist diese Funktion seit kurzem nicht mehr überall verfügbar. So lassen sich einzelne Anfragen im Netz dazu finden.

http://www.win-10-forum.de/outlook-com/20869-anmeldung-einmalcode-verschwunden.html

http://www.gutefrage.net/frage/anmeldung-mit-einmalcode-verschwunden-kein-login-mit-sms

Es gab aber nirgends eine Info zu finden, dass die Funktion eingestellt wurde. In der Knowledge Base gibt es diesen Artikel vom Juni 2016: https://support.microsoft.com/en-us/help/10552/microsoft-account-sign-in-single-use-code.

Fakt ist nur, dass aktuell der Einmalcode nicht verfügbar ist und wenn obige Links stimmen, fehlt die Funktion seit Anfang Oktober 2016.

Nach einigem Probieren bin ich dann aber doch noch fündig geworden. Nachdem ich https://account.activedirectory.windowsazure.com aufgerufen hatte, konnte ich mich mittels Einmalcode anmelden. Anschließend konnte ich dann Outlook.com aufrufen und war bereits angemeldet.

DANKE Microsoft für diesen tollen Schritt, damit habt ihr mal wieder deutlich Eure Bilanz aufpoliert und könnt wieder mehr Kohle sparen. Ihr habt wieder einmal mehr den Benutzern die Arschkarte gezeigt! Weiter so! Wer braucht schon Sicherheit, man hat ja den SDL…

Nuget-Pakete direkt in Powershell benutzen

19 November 2016

Powershell und Nuget, ein schwieriges Thema wenn man mit diesen beiden Begriffen auf Google losgeht. Man findet massenhaft Treffer aber die meisten handeln um Powershell+Nuget+Visual Studio. In diesem Artikel möchte ich beschreiben, was man tun muss um Nuget-Pakete, die üblicherweise für C# bzw. das .Net-Framework erstellt wurden, in Powershell nutzen zu können. Konkret geht es darum Pakete die unter https://www.nuget.org/packages zu finden sind direkt unter Powershell nutzbar zu machen.

Hat man ein aktuelles Windows 10 System mit Powershell 5.1 dann bekommt man automatisch das PackageManagement-Modul mitgeliefert. Allerdings hat man zu Anfang nur Zugriff auf PSGallery. Damit man auf die große Welt der Nuget-Pakete zugreifen kann, muss man einen PacketSource für Nuget hinzufügen. Dazu benötigt man den Einsprungspunkt für die Nuget-Paketauflistung. Dieser ist direkt unter https://www.nuget.org/ zu finden.

Dort sind momentan die beiden Feeds

NuGet feed v3 (VS 2015 / NuGet v3.x): https://api.nuget.org/v3/index.json

NuGet feed v2 (VS 2013 and earlier / NuGet 2.x): https://www.nuget.org/api/v2

aufgeführt. Welchen von beiden soll man verwenden? Man kann sich an der Nuget-Version, welche Powershell verwendet orientieren. Dazu fragt man einfach

Get-PackageProvider –Name Nuget

ab. Dort wird momentan Version 2.8.5.208 geliefert. Also verwendet man den v2 Feed. Dies geschieht durch hinzufügen eines PacketSource mit der v2-Feed-Adresse:

Register-PackageSource –Name MyNuget  –Location "https://www.nuget.org/api/v2" –Providername Nuget

Beim ersten Aufruf erfolgt eine Rückfrage:

Der Anbieter "nuget v2.8.5.208" ist nicht installiert.
"nuget" kann manuell von https://oneget.org/Microsoft.PackageManagement.NuGetProvider-2.8.5.208.dll heruntergeladen und installiert werden.
Soll PackageMangement automatisch heruntergeladen und "nuget" jetzt installiert werden?

Diese sollte man mit J beantworten. Anschließend kann man auf die Nugetpaketsammlung zugreifen:

Find-Package –Source MyNuget –Name *Mail*

Damit bekommt man alle vorhandenen Pakete die im Namen Mail enthalten aufgelistet.

IP-Adresse von WSD-Drucker per Powershell ermitteln

9 November 2016

Offensichtlich gibt es keine einfache Methode die IP-Adresse eines WSD-Druckers per Eingabeaufforderung zu ermitteln. Per GUI ist es klar, dass man in der Systemsteuerung bei Geräte und Drucker bei den Eigenschaften (nicht Druckereigenschaften) fündig wird. Leider wird bei Windows 10 in der Modernen Oberfläche aber auch diese Sache ausgespart. Wäre es nicht schön so eine wichtige Information direkt per Commandline zu bekommen?

Zunächst brauchen wir einen Drucker,  jeder sollte sich hier seinen eigenen WSD-fähigen Drucker aussuchen:

$printer=Get-Printer|out-gridview –passthru

Die weitere Beschreibung macht aber nur Sinn, wenn man einen WSD-fähigen Drucker hat. Wobei alle modernen Drucker mit Netz- oder WLAN-Anschluss dies unterstützten. Es funktioniert nicht, wenn der Drucker per USB angeschlossen ist!

Nun brauchen wir vom Drucker den Druckerport über den die Kommunikation läuft und vom Druckerport brauchen wir den Universal Resource Name:

$deviceURN = (Get-PrinterPort -Name $printer.PortName).DeviceUUID

Damit bekommt man dann sowas zurück: URN:UUID:6D4FF0CE-6B11-11D8-8020-001E8F1CF942. Mit dieser Information kann man noch nicht viel anfangen aber es ist eine eindeutige ID, welche nur dem spezifischen Drucker, weltweit einmalig zugeordnet ist. Mit dieser ID kann man nun in der Registrierung unter HKEY_LOCAL_MACHINE:\SYSTEM\CurrentControlSet\Enum\SWD\DAFWSDProvider\ fündig werden:

$location =  (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Enum\SWD\DAFWSDProvider\$deviceURN" –Name LocationInformation).LocationInformation

In $location steht nun bereits die IP-Adresse und sieht z. B. so aus: http://192.168.0.138:80/wsd/mex. Fast am Ziel, man kann nun die IP-Adresse ganz einfach extrahieren:

([System.UriBuilder]::new($location)).host

Nun hat man endlich die IP-Adresse des Druckers. Um das alles etwas zu vereinfachen hier eine kleine Funktion:

Function Get-IPAddressFromWSDDevice ($Printer) {

$deviceURN = (Get-PrinterPort -Name $printer.PortName).DeviceUUID
$location =  (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Enum\SWD\DAFWSDProvider\$deviceURN" –Name LocationInformation).LocationInformation
([System.UriBuilder]::new($location)).host

}

Noch ein Hinweis. Da leider die passenden Cmdlets erst ab Windows 8 aufwärts verfügbar sind, wird diese Methode nicht auf Windows 7 funktionieren. Die hier gezeigte Variante funktioniert übrigens auch bei IPv6-Adressen.