Recupero di dati da un computer remoto

È possibile ottenere dati o gestire le risorse nei computer remoti e nel computer locale. La connessione a un computer remoto in uno script di gestione remota Windows è molto simile a quella di creare una connessione locale. I dati dell'istanza WMI sono disponibili e, se il computer remoto ha hardware BMC che può comunicare usando il protocollo WS-Management, i dati ipMI (Intelligent Platform Management Interface) sono disponibili anche. Per altre informazioni, vedere Windows Gestione remota e WMI eGestione hardware remota.

Potrebbe essere necessario creare un oggetto ConnectionOptions per specificare informazioni sul tipo di autenticazione richiesto per l'accesso.

Se l'account nel computer remoto ha lo stesso nome utente e password di accesso, le uniche informazioni aggiuntive necessarie sono il trasporto, il nome di dominio e il nome del computer. A causa del controllo account utente (UAC), l'account remoto deve essere un account di dominio e un membro del gruppo Amministratori computer remoto. Se l'account è un membro del computer locale del gruppo Administrators, l'interfaccia utente non consente l'accesso al servizio WinRM. Per accedere a un servizio WinRM remoto in un gruppo di lavoro, è necessario disabilitare il filtro dell'interfaccia utente per gli account locali creando la voce del Registro di sistema DWORD seguente e impostandone il valore su 1: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] LocalAccountTokenFilterPolicy.

Per connettersi a un computer remoto usando il nome utente e la password di accesso

  1. Specificare il computer di destinazione con un nome di dominio completo o un indirizzo IP e assegnarlo a una costante. Se viene specificato un indirizzo IPv6, l'indirizzo deve essere racchiuso tra parentesi quadre.

    Const RemoteComputer = "ComputerName.domain.com"
    
  2. Creare un oggetto WSMan .

    Set objWsman = CreateObject("WSMan.Automation")
    
  3. Creare la sessione, specificando il trasporto, HTTP o HTTPS e concatenandolo con la costante che rappresenta il computer di destinazione.

    
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    

Nell'esempio di codice VBScript seguente viene illustrato lo script completo. Lo script include una subroutine per trasformare i dati da XML non elaborato al formato leggibile dall'utente. Per altre informazioni, vedere Visualizzazione dell'output XML da script WinRM.

Const RemoteComputer = "ComputerName.domain.com"

Set objWsman = CreateObject("WSMan.Automation")
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
strResource = "http://schemas.microsoft.com/wbem/wsman/1/" & _
  "wmi/root/cimv2/Win32_OperatingSystem"
Set objResponse = objSession.Enumerate(strResource)

While Not objResponse.AtEndOfStream
    DisplayOutput(objResponse.ReadItem) 
Wend

'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
    Dim xmlFile, xslFile
    Set xmlFile = CreateObject("MSXml.DOMDocument") 
    Set xslFile = CreateObject("MSXml.DOMDocument")
    xmlFile.LoadXml(strWinRMXml)
    xslFile.Load("WsmTxt.xsl")
    Wscript.Echo xmlFile.TransformNode(xslFile) 
End Sub

Per connettersi a un computer remoto usando un account diverso

  1. Specificare il computer di destinazione con un nome di dominio completo o un indirizzo IP e assegnarlo a una costante. Se viene specificato un indirizzo IPv6, l'indirizzo deve essere racchiuso tra parentesi quadre.

    Const RemoteComputer = "ComputerName.domain.com"
    
  2. Creare un oggetto WSMan .

    Set objWsman = CreateObject("Wsman.Automation")
    
    
  3. Chiamare il metodo WSMan.CreateConnectionOptions per creare un oggetto ConnectionOptions . L'account nel computer remoto deve essere membro del gruppo amministratori computer locale.

    Set objConnectionOptions = objWsman.CreateConnectionOptions
    objConnectionOptions.UserName = "Username"
    objConnectionOptions.Password = "Password"
    
  4. Nella chiamata WSman.CreateSession specificare i flag di connessione sessione appropriati nel parametro flag . Per altre informazioni, vedere Costanti sessione. Specificare il computer di destinazione con un nome computer completo o un indirizzo IP e il trasporto, http o https. Questo script richiede l'autenticazione Kerberos dal servizio WinRM remoto.

    A differenza degli script WMI, è possibile usare diversi metodi di autenticazione negli script WinRM. Per altre informazioni, vedere Autenticazione per connessioni remote.

    iFlags = objWsman.SessionFlagUseKerberos Or _
      objWsman.SessionFlagCredUserNamePassword
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _
      iFlags, objConnectionOptions)
    
  5. Dopo aver disponibile l'oggetto sessione, è possibile chiamare uno dei metodi dell'oggetto Session per ottenere i dati per una risorsa. È possibile ottenere dati per qualsiasi risorsa disponibile nel computer in cui è in esecuzione la sessione. Per altre informazioni, vedere Recupero di dati dal computer locale.

Nell'esempio di codice VBScript seguente viene illustrato lo script completo. Lo script include una subroutine per trasformare i dati da XML non elaborato al formato leggibile dall'utente. Per altre informazioni, vedere Visualizzazione dell'output XML da script WinRM. Lo script specifica l'autenticazione Kerberos, ma se il computer remoto si trova in un gruppo di lavoro anziché in un dominio, specificando Kerberos genera un errore.

Const RemoteComputer = "ComputerName.domain.com"

Set objWsman = CreateObject("Wsman.Automation")
Set objConnectionOptions = objWsman.CreateConnectionOptions
objConnectionOptions.UserName = "Username"
objConnectionOptions.Password = "Password"
iFlags = objWsman.SessionFlagUseKerberos Or _
  objWsman.SessionFlagCredUserNamePassword
Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _
  iFlags, objConnectionOptions)
strResource = "http://schemas.microsoft.com/wbem/wsman/1/" & _
  "wmi/root/cimv2/Win32_OperatingSystem"
Set objResponse = objSession.Enumerate(strResource)

While Not objResponse.AtEndOfStream
    DisplayOutput(objResponse.ReadItem) 
Wend

'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
    Dim xmlFile, xslFile
    Set xmlFile = CreateObject("MSXml2.DOMDocument.3.0") 
    Set xslFile = CreateObject("MSXml2.DOMDocument.3.0")
    xmlFile.LoadXml(strWinRMXml)
    xslFile.Load("WsmTxt.xsl")
    Wscript.Echo xmlFile.TransformNode(xslFile) 
End Sub

Informazioni sulla gestione remota Windows

Uso di Windows gestione remota

Informazioni di riferimento sulla gestione remota Windows