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 alla connessione locale. I dati dell'istanza WMI sono disponibili e, se il computer remoto dispone di hardware BMC in grado di comunicare tramite il protocollo WS-Management, sono disponibili anche i dati ipMI (Intelligent Platform Management Interface). Per altre informazioni, vedere Gestione remota Windows e GESTIONEhardware remota e WMI.

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 dell'account utente, l'account remoto deve essere un account di dominio e un membro del gruppo Administrators del computer remoto. Se l'account è un membro del computer locale del gruppo Administrators, controllo dell'account utente non consente l'accesso al servizio WinRM. Per accedere a un servizio WinRM remoto in un gruppo di lavoro, è necessario disabilitare il filtro controllo dell'account 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, specificare il trasporto, HTTP o HTTPS e concatenarla 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 dal codice XML non elaborato al formato leggibile. 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 administrators del computer locale.

    Set objConnectionOptions = objWsman.CreateConnectionOptions
    objConnectionOptions.UserName = "Username"
    objConnectionOptions.Password = "Password"
    
  4. Nella chiamata WSman.CreateSession specificare i flag di connessione di sessione appropriati nel parametro flags . Per altre informazioni, vedere Costanti di sessione. Specificare il computer di destinazione con un nome computer completo o un indirizzo IP e il trasporto, ovvero 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 che l'oggetto sessione è disponibile, è possibile chiamare uno dei metodi dell'oggetto Session per ottenere 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 dal codice XML non elaborato al formato leggibile. 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 viene generato 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 su Gestione remota Windows

Uso di Gestione remota Windows

Informazioni di riferimento sulla gestione remota di Windows