Udostępnij za pośrednictwem


Zdalne nawiązywanie połączenia z usługą WMI za pomocą programu PowerShell

Program Windows PowerShell udostępnia prosty mechanizm łączenia się z instrumentacją zarządzania Windows (WMI) na komputerze zdalnym. Na połączenia zdalne w usłudze WMI mają wpływ Zapora systemu Windows, ustawienia DCOM i Kontrola konta użytkownika (UAC). Aby uzyskać więcej informacji na temat konfigurowania połączeń zdalnych, zobacz Connecting to WMI Remotely Starting with Windows Vista.

Przykłady w tym temacie są oparte na skryptach VBScript z Nawiązywanie połączenia z usługą WMI na komputerze zdalnym. Wszystkie przykłady w tym temacie używają polecenia cmdlet Get-WmiObject. Aby uzyskać więcej informacji, zobacz Get-WmiObject.

Przykłady programu Windows PowerShell

Podczas tworzenia połączenia z komputerem zdalnym użytkownik może określić informacje o połączeniu, takie jak nazwa komputera zdalnego, poświadczenia i poziom uwierzytelniania dla połączenia. W poniższych przykładach pokazano, jak nawiązać połączenie z komputerem zdalnym przy użyciu różnych zestawów poświadczeń i jak uzyskać dostęp do informacji usługi WMI.

Poniższy przykład programu Windows PowerShell przedstawia ustawienie poziomu personifikacji:


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

W poprzednim przykładzie użytkownik łączy się z komputerem zdalnym przy użyciu tych samych poświadczeń (domeny i nazwy użytkownika), za pomocą których się zalogował. Użytkownik zażądał również użycia personifikacji. W przeciwieństwie do oryginalnego przykładu języka VBScript ciąg moniker nie jest wymagany, ponieważ poziom personifikacji jest ustawiany przez właściwość "Personifikacja". Domyślnie poziom personifikacji jest ustawiony na 3 (Personifikuj).

W przykładzie wymieniono wszystkie wystąpienia klasy Win32_Process uruchomionej na komputerze zdalnym.

Notatka

Należy określić przestrzeń nazw usługi WMI, z którą ma nawiązać połączenie na komputerze zdalnym, ponieważ może się zdarzyć, że domyślna przestrzeń nazw nie jest taka sama na różnych komputerach.

 

W poniższym przykładzie programu Windows PowerShell pokazano, jak nawiązać połączenie z komputerem zdalnym, używając różnych poświadczeń, i ustawić poziom podszywania na 3, czyli Impersonate.


$Computer = "atl-dc-01"

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

W poprzednim przykładzie nazwa komputera została przypisana do zmiennej $Computer. Użytkownik łączy się z komputerem zdalnym przy użyciu określonych poświadczeń (domeny i nazwy użytkownika) i żąda personifikacji poziomu uwierzytelniania.

Notatka

Znak akcentu grobowego (`) służy do oznaczania podziału wiersza. Jest on odpowiednikiem znaku podkreślenia (_) w języku VBScript.

 

Poniższy przykład programu Windows PowerShell łączy się z grupą komputerów zdalnych w tej samej domenie, tworząc tablicę nazw komputerów zdalnych, a następnie wyświetlając nazwy urządzeń Plug and Play — wystąpienia Win32_PnPEntity— na każdym komputerze:

$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
}

Notatka

Aby uruchomić poprzedni skrypt programu Windows PowerShell, musisz być administratorem na komputerach zdalnych. Ponadto, odnosząc się do poprzedniego przykładu, zwróć uwagę na następujące kwestie:

 

  • Nazwy komputerów w tablicy muszą być ujęte w znaki cudzysłowu, ponieważ są to ciągi.
  • Obiekty zwrócone przez Get-WmiObject są przypisywane do zmiennej $ColItems.
  • Operator zakresu [] ograniczył listę urządzeń Plug and Play do 48 wystąpień. Aby uzyskać więcej informacji, zobacz About_Operators.
  • Znak "|" jest znakiem potoku. Obiekt zwrócony przez ColItems jest wysyłany do polecenia cmdlet Format-List.

Poniższy przykład programu Windows PowerShell umożliwia nawiązanie połączenia z komputerem zdalnym w innej domenie. W tym przykładzie przedstawiono również nazwy procesów dla wystąpień Win32_Process na komputerze zdalnym.

$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
}

Nota

Aby uruchomić poprzedni skrypt programu Windows PowerShell, musisz być administratorem na komputerze zdalnym.

 

W poprzednim przykładzie użytkownik łączy się z komputerem zdalnym w innej domenie i określa preferowane ustawienia regionalne. Polecenie Get-Credential żąda poświadczeń użytkownika i przypisuje poświadczenia do obiektu. W przykładzie wymieniono również nazwy wystąpień klasy Win32_Process uruchomionej na komputerze.

Nawiązywanie połączenia z usługą WMI na komputerze zdalnym