Tag-Archiv für » wmi «

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 » , , , , , , «

+

27 | 08 | 2012

WMI Event 10 nach Neuinstallation von Windows Server 2008 R2 SP1

Geschrieben von um 13:21 Uhr

Der folgende kleine Skript beseitigt den WMI-Fehler 10, der bei einem frisch installierten Server auftritt:

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\subscription")

Set obj1 = objWMIService.ExecQuery("select * from __eventfilter where name='BVTFilter' and query='SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA ""Win32_Processor"" AND TargetInstance.LoadPercentage > 99'")

For Each obj1elem in obj1
set obj2set = obj1elem.Associators_("__FilterToConsumerBinding")
set obj3set = obj1elem.References_("__FilterToConsumerBinding")
For each obj2 in obj2set
WScript.echo "Deleting the object"
WScript.echo obj2.GetObjectText_
obj2.Delete_
Next
For each obj3 in obj3set
WScript.echo "Deleting the object"
WScript.echo obj3.GetObjectText_
obj3.Delete_
Next
WScript.echo "Deleting the object"
WScript.echo obj1elem.GetObjectText_
obj1elem.Delete_
Next

Als VBS abspeichern, auf den Server kopieren, ausführen – fertig.

Tags » , , , , «

+