Úlohy správy účtu a domény získávají informace, jako je doména počítače nebo aktuálně přihlášený uživatel. Mnoho z těchto úloh se nejlépe provádí se skripty ADSI. Další informace a další příklady najdete v tématu TechNet ScriptCenter Úložiště skriptů.
Příklady skriptů uvedené v tomto tématu získávají data pouze z místního počítače. Další informace o tom, jak pomocí skriptu získat data ze vzdálených počítačů, naleznete v tématu Připojení k rozhraní WMI na vzdáleném počítači.
Následující postup popisuje, jak spustit skript.
Spuštění skriptu
Zkopírujte kód a uložte ho do souboru s příponou .vbs, například název_souboru.vbs. Ujistěte se, že textový editor nepřidá do souboru .txt příponu.
Otevřete okno příkazového řádku a přejděte do adresáře, do kterého jste soubor uložili.
Na příkazovém řádku zadejte cscript filename.vbs.
Pokud nemáte přístup k protokolu událostí, zkontrolujte, jestli používáte příkazový řádek se zvýšenými oprávněními. Některé protokoly událostí, jako je protokol událostí zabezpečení, můžou být chráněné řízením uživatelských přístupů (UAC).
Poznámka
Ve výchozím nastavení cscript zobrazí výstup skriptu v okně příkazového řádku. Vzhledem k tomu, že skripty rozhraní WMI můžou vytvářet velké objemy výstupu, můžete chtít výstup přesměrovat na soubor. Na příkazovém řádku zadejte cscript filename.vbs > outfile.txt a přesměrujte výstup skriptu název_souboru.vbs do outfile.txt.
Následující tabulka uvádí příklady skriptů, které lze použít k získání různých typů dat z místního počítače.
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputers = objWMIService.ExecQuery("Select DomainRole from Win32_ComputerSystem")
For Each objComputer in colComputers
Select Case objComputer.DomainRole
Case 0
strComputerRole = "Standalone Workstation"
Case 1
strComputerRole = "Member Workstation"
Case 2
strComputerRole = "Standalone Server"
Case 3
strComputerRole = "Member Server"
Case 4
strComputerRole = "Backup Domain Controller"
Case 5
strComputerRole = "Primary Domain Controller"
End Select
Wscript.Echo strComputerRole
Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objItem in colItems
Wscript.Echo "Computer Name: " & objItem.Name
Next
PowerShell
$Computer = Get-WmiObject -Class Win32_ComputerSystem
"Computer Name is: {0}" -f $Computer.Name
C#
pomocí Microsoft.Management.Infrastructure; ... Relace CimSession = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = relace. QueryInstances(@"root\cimv2"; "WQL"; "SELECT * FROM Win32_ComputerSystem");
foreach (CimInstance cimObj in queryInstance)
{
Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString());
}
... najděte jméno osoby, která je aktuálně přihlášená k počítači?
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objComputer in colComputer
Wscript.Echo "User Name = " & objComputer.UserName & VBNewLine & "Computer Name = " & objComputer.Name
WScript.Echo objComputer.UserName
Next
PowerShell
$computers = Get-WmiObject -Class Win32_ComputerSystem
"Logged on user(s):"
foreach($computer in $computers) {
"User: {0}" -f $computer.UserName
}
C#
pomocí Microsoft.Management.Infrastructure; ... Relace CimSession = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = relace. QueryInstances(@"root\cimv2"; "WQL"; "SELECT * FROM Win32_ComputerSystem");
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputers = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objComputer in colComputers
errReturn = ObjComputer.Rename("NewName")
WScript.Echo "Computer name is now " & objComputer.Name
Next
<# Získat objekt počítače #> $Computer = Get-WmiObject -Class Win32_ComputerSystem -ComputerName $comp
<# Přejmenovat počítač #> $Return = $Computer.Rename($NewName)
if ($return.ReturnValue -eq 0) {
"Computer name is now: $NewName"
" but you need to reboot first"
} else {
" RenameFailed, return code: {0}" -f $return.ReturnValue
}
... Načíst pouze místní skupiny pomocí rozhraní WMI?
Použijte třídu Win32_Group a do dotazu jazyka WQL zadejte následující klauzuli WHERE.
Where LocalAccount = True
VB
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_Group Where LocalAccount = True")
For Each objItem in colItems
Wscript.Echo "Local Account: " & objItem.LocalAccount & VBNewLine _
& "Name: " & objItem.Name & VBNewLine _
& "SID: " & objItem.SID & VBNewLine _
& "SID Type: " & objItem.SIDType & VBNewLine _
& "Status: " & objItem.Status & VBNewLine
Next