Archiv » August, 2016 «

17 | 08 | 2016

PowerShell Hack: Schnelle Übersicht über Updates gewinnen

Geschrieben von um 12:01 Uhr

Wenn wir „einfach nur“ wissen wollen, wann auf einem Haufen Maschinen zuletzt Updates installiert wurden und wie viele noch jeweils ausstehen, kann man sich wie folgt behelfen:

$servers = @('SERVER01'
,'SERVER02'
,'SERVER03'
# usw.
)
$script_block = $ExecutionContext.InvokeCommand.NewScriptBlock(@'
$wu_session = New-Object -COM "Microsoft.Update.Session";
$wu_searcher = $wu_session.CreateUpdateSearcher();
$last_instd = ($wu_searcher.QueryHistory(0,1)).Item(0).Date;
$wures = $wu_searcher.Search("IsInstalled=0 and Type='Software'");
$updates_to_install = $wures.Updates.Count;
"$($env:COMPUTERNAME) | $last_instd | $updates_to_install"
'@)
Invoke-Command -ComputerName $servers -ScriptBlock $script_block

Die Reihenfolge der zurückgelieferten Ergebnisse läßt sich hier aber nicht vorhersagen. Möchte man die Ergebnisse genau in der Reihenfolge sehen, wie die Server eingegeben wurden, müsste man den Aufruf einzeln auslösen. Die letzte Zeile ist dann durch

foreach ($server in $servers) {
    Invoke-Command -ComputerName $server -ScriptBlock $script_block
}

zu ersetzen.

Die Auswahl der zu untersuchenden Computer läßt sich freilich auch automatisieren. Um z.B. Überblick über alle Computer in einer OU zu gewinnen, kann man Anfang die Definition des Arrays durch

$servers = (Get-ADComputer -Filter * -SearchBase "OU=Computer,OU=Firma,DC=meine,DC=domain,DC=de" -SearchScope Subtree).Name

ersetzt werden.

Tags » , , , «

+

16 | 08 | 2016

PowerShell Hack: Hyper-V-Host einer VM remote ermitteln

Geschrieben von um 16:35 Uhr

Das ist nichts wirklich Neues, einfach aus der Reihe „gewusst wie“. Aufgabe: Den Hostnamen einer Hyper-V-VM ermitteln, während man weder mit dem Hyper-V-Host noch mit der VM eine gemeinsame Authentifizierungsbasis hat, die Credentials also explizit übergeben muss. Erschwert wird die Nummer dadurch, dass einige der betroffenen Maschinen noch Server 2003 ausführen und damit PowerShell-Remoting als Allheilmittel ausscheidet. Der gesuchte Name steht natürlich in der Registry, aber die an sich elegantere Lösung mit [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey funktioniert nicht, da sie keine explizite Authentifizierung zulässt. Aber es gibt ja noch WMI und den StdReg-Provider. Da geht natürlich deutlich mehr. Und tatsächlich, so geht’s:

$HKEY_LOCAL_MACHINE=2147483650
$my_computer = "<NAME, FQDN oder IP>"
$my_credentials = Get-Credential
(Invoke-WmiMethod -Namespace "ROOT\default" -Class "StdRegProv" -ComputerName $my_computer -Credential $my_credentials -Name GetStringValue -ArgumentList @($HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters","PhysicalHostName")).sValue

Freilich gibt es auch https://psremoteregistry.codeplex.com/ von Shay Levi, aber das ist a. alt und muss b. eingebunden werden, was nicht immer wünschenswert oder zulässig ist.

Tags » , , , , , , «

+

15 | 08 | 2016

SCCM 2012: Programm bei jedem Login ausführen

Geschrieben von um 10:32 Uhr

Man sollte meinen, dass es die einfachste Aufgabe der Welt wäre: ein Skript bei jeder Benutzeranmeldung im Kontext eben dieses Benutzers auszuführen. Tatsächlich aber ist dieser Ausführungsmodus bei SCCM, zumindest bis inklusive 2012R2, nicht vorgesehen! Die beste Annäherung an den gewünschten Zustand ist, das Skript einmal pro Benutzer bei der Anmeldung auszuführen.

So klappt’s aber dennoch:

  • das Skript als Programm in einem Paket definieren. Für das Paket einstellen, dass der Content lokal gecacht bleiben soll
  • Im Programm einstellen, dass bei Bereitstellung an Computer es einmal für jeden User ausgeführt werden soll, und dass das Programm „Immer neu gestartet“ werden soll, also unabhängig vom Erfolg oder Misserfolg
  • Und nun der Trick: In der Bereitstellung (an eine Computer-Sammlung) neben dem Zeitplan „so schnell wie möglich nach dem Logon“ auch einen Zeitplan mit einem (weit in der Zukunft liegenden) festen Datum eintragen

Damit wird das Programm bei jedem Login jedes Benutzers ausgeführt.

Tags » , , , , , , , «

+

12 | 08 | 2016

Auftakttreffen der Windows Server User Group Leipzig: Das war schön!

Geschrieben von um 10:04 Uhr

Gestern hatte ich das Vergnügen, beim ersten Offline-Treffen der Windows Server User Group Leipzig dabei zu sein. Die Gruppe wird von Haiko Hertes und Ralf Coert angeführt und hatte gleich zu Beginn einen sehr schönen Start hingelegt: In den Räumlichkeiten der COMPAREX AG gab es für die knapp 15 Teilnehmer zwei interessante Vorträge der MVPs Eric Berg (Neuegkeiten in Server 2016) und Florian Klaffenbach (Storage Spaces Direct + Storage Replica) mit anschließender Diskussion.

Wir von der WSUG Berlin waren bestimmt nicht das letzte Mal da 🙂 . Mitglieder der WSUG LE sind natürlich wie immer herzlich eingeladen, auch bei unseren Treffen vorbeizuschauen.

Vielen Dank an Haiko und Ralf sowie an alle Sponsoren und alls Gute für die neue Gruppe!

Tags » «

+