Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode criar uma conexão remota com WMI com VBScript criando um objeto de conexão. Este objeto contém o nome do computador, o namespace WMI ao qual você deseja se conectar, bem como quaisquer credenciais e níveis de autenticação relevantes.
Para conectar-se a um sistema remoto usando VBScript
Especifique as informações de conexão, como o nome do computador remoto, credenciais e o nível de autenticação da conexão.
Se estiver a conectar-se a um computador remoto usando as mesmas credenciais (domínio e nome de utilizador) com as quais iniciou sessão, poderá especificar as informações de conexão em um moniker GetObject, conforme descrito no exemplo de código a seguir.
strComputer = "Computer_B" Set objWMIService = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & strComputer & "\Root\CIMv2")De um modo geral, você deve especificar o namespace WMI ao qual se conectar no computador remoto. Isso ocorre porque é possível que o namespace padrão não seja o mesmo em computadores diferentes. Especificar o namespace garante que você se conecte ao mesmo namespace em todos os computadores.
Para obter mais informações sobre constantes VBScript e cadeias de caracteres de script para usar a conexão moniker, consulte Definindo o nível de segurança de processo padrão usando VBScript.
Se você se conectar a um computador remoto em um domínio diferente ou usando um nome de usuário e senha diferentes, deverá usar o métodoSWbemLocator.ConnectServer.
Como acontece com um moniker, você usa ConnectServer para especificar as credenciais, o nível de autenticação e o namespace para a conexão remota. O exemplo de código a seguir descreve o uso do ConnectServer para acessar um computador remoto usando uma conta de administrador e senha.
strComputer = "Computer_B" Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, _ "Root\CIMv2", _ "fabrikam\administrator", _ "password")Ao utilizar a função ConnectServer para conexões remotas, configure a representação e a autenticação no objeto de segurança obtido através de uma chamada para SWbemServices.Security. Você pode usar a enumeração WbemImpersonationLevelEnum para especificar o nível de representação.
O exemplo de código a seguir define o nível de representação para o exemplo de código VBScript anterior.
objSWbemServices.Security_.ImpersonationLevel = 3Observe que algumas conexões exigem um nível de autenticação específico. Para mais informações, consulte Segurança do Processo de Aplicação do Cliente e Proteção de Clientes de Script.
Em particular, você deve definir o nível de autenticação como RPC_C_AUTHN_LEVEL_PKT_PRIVACY ou 6 se o namespace ao qual você está se conectando no computador remoto exigir uma conexão criptografada antes de retornar dados. Você também pode usar esse nível de autenticação, mesmo que o namespace não o exija. Isso garante que os dados sejam criptografados à medida que atravessam a rede. Se você tentar definir um nível de autenticação inferior ao permitido, uma mensagem de acesso negado será retornada. Para obter mais informações, consulte Exigindo uma conexão criptografada com um namespace.
Depois de estabelecer a ligação, pode continuar a aceder aos dados WMI. Para obter mais informações, consulte Tarefas WMI para scripts e aplicativos.
Exemplos
Para obter um exemplo maior de VBScript, consulte a seção Exemplos na página de referência do SWbemLocator.ConnectServer.
O exemplo de código VBScript a seguir se conecta a um grupo de computadores remotos no mesmo domínio criando uma matriz de nomes de computadores remotos e, em seguida, exibindo nomes dos dispositivos Plug and Play — instâncias de Win32_PnPEntity— em cada computador. Para executar o script abaixo, você deve ser um administrador nos computadores remotos. Observe que o "\\" necessário antes que o nome do computador remoto seja adicionado pelo script seguindo a configuração de nível de representação. Para obter mais informações sobre caminhos WMI, consulte descrevendo o local de um objeto WMI.
On Error Resume Next
arrComputers = Array("Computer1","Computer2","Computer3")
For Each strComputer In arrComputers
WScript.Echo
WScript.Echo "===================================="
WScript.Echo "Computer: "& strComputer
WScript.Echo "===================================="
Set objWMIService = GetObject("winmgmts:\\" & strComputer& "\Root\CIMv2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PnPEntity",,48)
For Each objItem in colItems
Wscript.Echo "-----------------------------------"
Wscript.Echo "Win32_PnPEntity instance"
Wscript.Echo "-----------------------------------"
Wscript.Echo "Name: "& objItem.Name
Wscript.Echo "Status: "& objItem.Status
Next
Next
O exemplo de código VBScript a seguir permite que você se conecte a um computador remoto usando credenciais diferentes. Por exemplo, um computador remoto em um domínio diferente ou se conectando a um computador remoto que requer um nome de usuário e senha diferentes. Nesse caso, use a conexão SWbemServices.ConnectServer .
' Full Computer Name
' can be found by right-clicking My Computer,
' then click Properties, then click the Computer Name tab)
' or use the computer's IP address
strComputer = "FullComputerName"
strDomain = "DOMAIN"
Wscript.StdOut.Write "Please enter your user name:"
strUser = Wscript.StdIn.ReadLine
Set objPassword = CreateObject("ScriptPW.Password")
Wscript.StdOut.Write "Please enter your password:"
strPassword = objPassword.GetPassword()
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, _
"Root\CIMv2", _
strUser, _
strPassword, _
"MS_409", _
"ntlmdomain:" + strDomain)
Set colSwbemObjectSet = objSWbemServices.ExecQuery("Select * From Win32_Process")
For Each objProcess in colSWbemObjectSet
Wscript.Echo "Process Name: " & objProcess.Name
Next
Tópicos relacionados