Tarefas administrativas de conta e domínio obtêm informações como o domínio do computador ou o usuário conectado no momento. Muitas dessas tarefas são melhor executadas com scripts ADSI. Para obter mais informações e outros exemplos, consulte o Repositório de Scripts do Do TechNet.
Os exemplos de script mostrados neste tópico obtêm dados somente do computador local. Para obter mais informações sobre como usar o script para obter dados de computadores remotos, consulte Conectando-se ao WMI em um computador remoto.
O procedimento a seguir descreve como executar um script.
Executar um script
- Copie o código e salve-o em um arquivo com uma extensão .vbs, como filename.vbs. Verifique se o editor de texto não adiciona uma extensão .txt ao arquivo.
- Abra uma janela do prompt de comando e navegue até o diretório onde você salvou o arquivo.
- Digite cscript filename.vbs no prompt de comando.
- Se você não puder acessar um log de eventos, verifique se está em execução em um prompt de comando com privilégios elevados. Alguns Logs de Eventos, como o Log de Eventos de Segurança, podem ser protegidos pelos Controles de Acesso do Usuário (UAC).
Nota
Por padrão, o cscript exibe a saída de um script na janela do prompt de comando. Como os scripts WMI podem produzir grandes quantidades de saída, convém redirecionar a saída para um arquivo. Digite cscript filename.vbs > outfile.txt no prompt de comando para redirecionar a saída do script filename.vbs para outfile.txt.
A tabela a seguir lista exemplos de script que podem ser usados para obter vários tipos de dados do computador local.
... determinar o domínio no qual um computador pertence? |
Use a classe Win32_ComputerSystem e verifique o valor da propriedade Domain. Você também pode usar a propriedade DNSDomain no Win32_NetworkAdapterConfiguration.
strComputer = ". Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colSettings = objWMIService.ExecQuery("Select * from Win32_ComputerSystem") For Each objComputer in colSettings
Wscript.Echo "System Name: " & objComputer.Name
Wscript.Echo "Domain: " & objComputer.Domain
Next
|
$computer = Get-WmiObject -Class Win32_ComputerSystem
"System Name: {0}" -f $computer.name
"Domain : {0}" -f $computer.domain
|
usando Microsoft.Management.Infrastructure; ... Sessão CimSession = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = session. QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem"); foreach (CimInstance cimObj in queryInstance)
{
Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString());
Console.WriteLine(cimObj.CimInstanceProperties["Domain"].ToString());
}
|
|
... determinar se um computador é um servidor ou uma estação de trabalho? |
Use a classe Win32_ComputerSystem e a propriedade DomainRole.
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
|
$Computer = Get-WmiObject -Class Win32_ComputerSystem "Computer "{0}.{1} " é um: "-f $Computer.Name,$computer.domain
switch ($computer.DomainRole) {
0 {"Standalone Workstation"}
1 {"Member Workstation"}
2 {"Standalone Server"}
3 {"Member Server"}
4 {"Backup Domain Controller"}
5 {"Primary Domain Controller"}
}
|
|
... determinar o nome do computador? |
Use a classe Win32_ComputerSystem e a propriedade Name. Você também pode usar a propriedade DNSHostName em Win32_NetworkAdapterConfiguration.
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
|
$Computer = Get-WmiObject -Class Win32_ComputerSystem
"Computer Name is: {0}" -f $Computer.Name
|
usando Microsoft.Management.Infrastructure; ... Sessão CimSession = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = session. QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem"); foreach (CimInstance cimObj in queryInstance)
{
Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString());
}
|
|
... localize o nome da pessoa atualmente conectada a um computador? |
Use a classe Win32_ComputerSystem e a propriedade UserName.
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
|
$computers = Get-WmiObject -Class Win32_ComputerSystem
"Logged on user(s):"
foreach($computer in $computers) {
"User: {0}" -f $computer.UserName
}
|
usando Microsoft.Management.Infrastructure; ... Sessão CimSession = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = session. QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem"); foreach (CimInstance cimObj in queryInstance)
{
Console.WriteLine("User Name: " + cimObj.CimInstanceProperties["UserName"].ToString());
}
|
|
... renomear um computador? |
Use a classe Win32_ComputerSystem e o método Renomear.
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
|
param ( [$String] $NewName = 'NewName', [$string] $Comp = "." }
<# Obter objeto de computador #> $Computer = Get-WmiObject -Class Win32_ComputerSystem -ComputerName $comp
<# Renomear o computador #> $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
}
|
|
... recuperar apenas grupos locais usando WMI? |
Use a classe Win32_Group e inclua a seguinte cláusula WHERE na consulta do WQL.
Where LocalAccount = True
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
|
$Accts=Get-WMIObjectWin32_Group|where {$_.LocalAccount}
$accts |ftName, Sid, SidType, Status-autosize
|
|
-
tarefas WMI para scripts e aplicativos
-
exemplos de aplicativo WMI C++
-
do TechNet ScriptCenter