Удаленное подключение к WMI с помощью PowerShell

Windows PowerShell предоставляет простой механизм подключения к инструментарию управления Windows (WMI) на удаленном компьютере. На удаленные подключения в WMI влияют брандмауэр Windows, параметры DCOM и контроль учетных записей (UAC). Дополнительные сведения о настройке удаленных подключений см. в статье Удаленное подключение к WMI, начиная с Windows Vista.

Примеры в этом разделе основаны на VBScripts из раздела Подключение к WMI на удаленном компьютере. Во всех примерах в этом разделе используется командлет Get-WmiObject . Дополнительные сведения см. в разделе Get-WmiObject.

примеры Windows PowerShell

При создании подключения к удаленному компьютеру пользователь может указать сведения о подключении, такие как имя удаленного компьютера, учетные данные и уровень проверки подлинности для подключения. В следующих примерах показано, как подключиться к удаленному компьютеру с помощью различных наборов учетных данных и как получить доступ к сведениям WMI.

В следующем примере Windows PowerShell показано задание уровня олицетворения:


Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -ComputerName Computer_B

В предыдущем примере пользователь подключается к удаленному компьютеру, используя те же учетные данные (домен и имя пользователя), с которыми он выполнил вход. Пользователь также попросил использовать олицетворение. В отличие от исходного примера VBScript, строка моникера не требуется, так как уровень олицетворения задается свойством "Олицетворение". По умолчанию уровень олицетворения имеет значение 3 (олицетворение).

В примере перечислены все экземпляры класса Win32_Process , которые выполняются на удаленном компьютере.

Примечание

Следует указать пространство имен WMI для подключения на удаленном компьютере, так как возможно, что пространство имен по умолчанию не совпадает на разных компьютерах.

 

В следующем примере Windows PowerShell показано, как подключиться к удаленному компьютеру с разными учетными данными и задать уровень олицетворения равным 3, то есть impersonate:


$Computer = "atl-dc-01"

Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -Credential `
FABRIKAM\administrator -ComputerName $Computer

В предыдущем примере имя компьютера было присвоено переменной $Computer. Пользователь подключается к удаленному компьютеру, используя определенные учетные данные (домен и имя пользователя), и запрашивает олицетворение для уровня проверки подлинности.

Примечание

Символ серьезного акцента (') используется для обозначения разрыва строки. Он эквивалентен символу подчеркивания (_) в VBScript.

 

В следующем примере Windows PowerShell выполняется подключение к группе удаленных компьютеров в том же домене путем создания массива имен удаленных компьютеров, а затем отображения имен Plug and Play устройств (экземпляров Win32_PnPEntity) на каждом компьютере:

$ArrComputers = "Computer1", "Computer2", "Computer3"
foreach ($Computer in $ArrComputers) 
{
write-host ""
write-host "===================================="
write-host "Computer: $Computer"
write-host "===================================="

write-host "-----------------------------------"
write-host "Win32_PnPEntity instance"
write-host "-----------------------------------"

$ColItems = Get-WmiObject -Class Win32_PnPEntity -Namespace "root\cimv2" -Computer $Computer
$ColItems[0..47] | Format-List Name, Status
}

Примечание

Для выполнения предыдущего скрипта Windows PowerShell необходимо быть администратором на удаленных компьютерах. Кроме того, в отношении предыдущего примера обратите внимание на следующее:

 

  • Имена компьютеров в массиве должны быть заключены в кавычки, так как они являются строками.
  • Объекты, возвращаемые командлетом Get-WmiObject , назначаются переменной $ColItems.
  • Оператор диапазона [] ограничили список Plug and Play устройств 48 экземплярами. Дополнительные сведения см. в разделе About_Operators.
  • "|" — это символ конвейера. Объект, возвращаемый ColItems, отправляется в командлет Format-List .

Следующий пример Windows PowerShell позволяет подключиться к удаленному компьютеру в другом домене. В этом примере также отображаются имена процессов для экземпляров Win32_Process на удаленном компьютере.

$Computer = "FullComputerName" 
$Domain = "DOMAIN"
$Credential = Get-Credential
$ColItems = Get-WmiObject -Class Win32_Process -Authority "ntlmdomain:$Domain" `
-Credential $Credential -Locale "MS_409" -Namespace "root\cimv2"  -ComputerName $Computer

foreach ($ObjItem in $colItems) 
{
write-host "Process Name:" $ObjItem.name
}

Примечание

Для выполнения предыдущего скрипта Windows PowerShell необходимо быть администратором на удаленном компьютере.

 

В предыдущем примере пользователь подключается к удаленному компьютеру в другом домене и задает предпочтительный языковой стандарт. Команда Get-Credential запрашивает учетные данные пользователя и назначает их объекту. В примере также перечислены имена экземпляров класса Win32_Process , которые выполняются на компьютере.

Подключение к WMI на удаленном компьютере