3

以下脚本在最后一行失败Get-WmiObject : Invalid namespace

$password = ConvertTo-SecureString "password" -AsPlainText -Force
$cred= New-Object System.Management.Automation.PSCredential ("domain\user", $password )
Write-Host "Entering PS Session..."
Enter-PSSession -Computer hyperVServer -Credential $cred
Start-Sleep -s 5
$server = "servername"

$query = "SELECT * FROM Msvm_ComputerSystem WHERE ElementName='" + $server + "'"
$VM = get-wmiobject -query $query -namespace "root\virtualization" -computername "."

但是,当我将其一一输入到控制台时,它可以毫无问题地运行。

由于一些时间问题,我添加了Start-Sleep...会话需要几秒钟才能真正打开。任何想法为什么该行仅在作为脚本运行时才会失败?

4

2 回答 2

2

Enter-PSSession 仅用于交互式使用。如果您想以脚本(非交互方式)在远程系统上运行命令,则需要改用 Invoke-Command。请运行 Get-Help Invoke-Command -Full 以获取更多详细信息。

于 2013-08-08T18:48:03.483 回答
0

不知道为什么它在一个而不是另一个中起作用,但我认为这与您的远程会话有关。以下是不需要远程会话的命令列表,只需使用计算机名称即可。http://technet.microsoft.com/en-us/library/dd819505.aspx

$password = ConvertTo-SecureString "password" -AsPlainText -Force
$cred= New-Object System.Management.Automation.PSCredential ("domain\user", $password )
$server = "servername"
$query = "SELECT * FROM Msvm_ComputerSystem WHERE ElementName=$server"
$VM = get-wmiobject -query $query -namespace "root\virtualization" -computername hyperVServer -credential $cred

也编辑了您的查询 concat。

于 2013-08-08T18:47:22.493 回答