Powershell命令仅在作为脚本运行时失败,并且“无效的命名空间”,而不是在控制台中

时间:2013-08-08 14:53:00

标签: powershell

以下脚本在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 ...会话需要几秒钟才能实际打开。有什么想法为什么只有当它作为脚本运行时才会失败?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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。