Connessione a WMI in remoto con PowerShell
Windows PowerShell offre un meccanismo semplice per connettersi a Strumentazione gestione Windows (WMI) in un computer remoto. Le connessioni remote in WMI sono interessate da Windows Firewall, impostazioni DCOM e Controllo account utente . Per altre informazioni sulla configurazione delle connessioni remote, vedere Connessione a WMI In remoto a partire da Windows Vista.
Gli esempi di questo argomento sono basati sui VBScript da Connessione a WMI in un computer remoto. Tutti gli esempi di questo argomento usano il cmdlet Get-WmiObject . Per altre informazioni, vedere Get-WmiObject.
Windows PowerShell esempi
Quando si crea una connessione a un computer remoto, un utente può specificare le informazioni di connessione, ad esempio il nome del computer remoto, le credenziali e il livello di autenticazione per la connessione. Gli esempi seguenti illustrano come connettersi a un computer remoto usando diversi set di credenziali e come accedere alle informazioni WMI.
Nell'esempio di Windows PowerShell seguente viene illustrato l'impostazione del livello di rappresentazione:
Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -ComputerName Computer_B
Nell'esempio precedente l'utente si connette a un computer remoto usando le stesse credenziali (dominio e nome utente) con cui hanno eseguito l'accesso. L'utente ha anche richiesto di usare la rappresentazione. A differenza dell'esempio VBScript originale, non è necessaria una stringa moniker perché il livello di rappresentazione è impostato dalla proprietà "Rappresentazione". Per impostazione predefinita, il livello di rappresentazione è impostato su 3 (Rappresentazione).
Nell'esempio vengono elencate tutte le istanze della classe Win32_Process in esecuzione nel computer remoto.
Nota
È necessario specificare lo spazio dei nomi WMI a cui connettersi nel computer remoto perché è possibile che lo spazio dei nomi predefinito non sia lo stesso in computer diversi.
L'esempio di Windows PowerShell seguente illustra come connettersi a un computer remoto con credenziali diverse e impostare il livello di rappresentazione su 3, ovvero Impersonate:
$Computer = "atl-dc-01"
Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -Credential `
FABRIKAM\administrator -ComputerName $Computer
Nell'esempio precedente il nome del computer è stato assegnato alla variabile $Computer. L'utente si connette a un computer remoto usando credenziali specifiche (dominio e nome utente) e richiede la rappresentazione per il livello di autenticazione.
Nota
Il carattere accento grave (') viene usato per indicare un'interruzione di riga. Equivale al carattere di sottolineatura (_) in VBScript.
L'esempio di Windows PowerShell seguente si connette a un gruppo di computer remoti nello stesso dominio creando una matrice di nomi computer remoti e quindi visualizzando i nomi dei dispositivi di Plug and Play, istanze di Win32_PnPEntity, in ogni computer:
$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
}
Nota
Per eseguire lo script di Windows PowerShell precedente, è necessario essere un amministratore nei computer remoti. Inoltre, relativo all'esempio precedente, tenere presente quanto segue:
- I nomi di computer nella matrice devono essere racchiusi tra virgolette perché sono stringhe.
- Gli oggetti restituiti da Get-WmiObject vengono assegnati alla variabile $ColItems.
- L'operatore range [] limita l'elenco di dispositivi Plug and Play a 48 istanze. Per altre informazioni, vedere About_Operators.
- Il carattere "|" è il carattere della pipeline. L'oggetto restituito da ColItems viene inviato al cmdlet Format-List .
L'esempio di Windows PowerShell seguente consente di connettersi a un computer remoto in un dominio diverso. In questo esempio vengono visualizzati anche i nomi di processo per le istanze di Win32_Process nel computer remoto.
$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
Per eseguire lo script di Windows PowerShell precedente, è necessario essere un amministratore nel computer remoto.
Nell'esempio precedente l'utente si connette a un computer remoto in un dominio diverso e specifica le impostazioni locali preferite. Il comando Get-Credential richiede le credenziali dell'utente e assegna le credenziali a un oggetto. L'esempio elenca anche i nomi delle istanze della classe Win32_Process in esecuzione nel computer.
Argomenti correlati