Задачи администрирования учетной записи и домена получают такие сведения, как домен компьютера или текущий пользователь, выполнивший вход. Многие из этих задач лучше всего выполнять с помощью скриптов ADSI . Дополнительные сведения и другие примеры см. в репозитории скриптов Центра сценариев TechNet.
Примеры скриптов, показанные в этом разделе, получают данные только с локального компьютера. Дополнительные сведения об использовании скрипта для получения данных с удаленных компьютеров см. в разделе Подключение к WMI на удаленном компьютере.
В следующей процедуре описывается запуск скрипта.
Запуск сценария
Скопируйте код и сохраните его в файле с расширением VBS, например filename.vbs. Убедитесь, что текстовый редактор не добавляет расширение .txt в файл.
Откройте окно командной строки и перейдите в каталог, в котором сохранен файл.
Введите cscript filename.vbs в командной строке.
Если вы не можете получить доступ к журналу событий, проверка, чтобы узнать, выполняется ли вы из командной строки с повышенными привилегиями. Некоторые журналы событий, например журнал событий безопасности, могут быть защищены средствами управления доступом пользователей (UAC).
Примечание
По умолчанию cscript отображает выходные данные скрипта в окне командной строки. Так как скрипты WMI могут создавать большие объемы выходных данных, может потребоваться перенаправить выходные данные в файл. Введите cscript filename.vbs > outfile.txt в командной строке, чтобы перенаправить выходные данные скриптаfilename.vbs на outfile.txt.
В следующей таблице перечислены примеры скриптов, которые можно использовать для получения различных типов данных с локального компьютера.
Часто выполняемые действия в новом интерфейсе
Классы или методы WMI
... определить домен, к которому принадлежит компьютер?
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#
использование Microsoft.Management.Infrastructure; ... Сеанс 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());
}
... найти имя пользователя, выполнившего вход на компьютер?
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#
использование Microsoft.Management.Infrastructure; ... Сеанс CimSession = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = session. 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
if ($return.ReturnValue -eq 0) {
"Computer name is now: $NewName"
" but you need to reboot first"
} else {
" RenameFailed, return code: {0}" -f $return.ReturnValue
}
... получить только локальные группы с помощью инструментария WMI?