![Powershell 命令仅在作为脚本运行时失败并显示“无效命名空间”,而不是在控制台中运行](https://linux22.com/image/616094/Powershell%20%E5%91%BD%E4%BB%A4%E4%BB%85%E5%9C%A8%E4%BD%9C%E4%B8%BA%E8%84%9A%E6%9C%AC%E8%BF%90%E8%A1%8C%E6%97%B6%E5%A4%B1%E8%B4%A5%E5%B9%B6%E6%98%BE%E7%A4%BA%E2%80%9C%E6%97%A0%E6%95%88%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%E2%80%9D%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E5%9C%A8%E6%8E%A7%E5%88%B6%E5%8F%B0%E4%B8%AD%E8%BF%90%E8%A1%8C.png)
以下脚本在最后一行失败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
...会话实际上需要几秒钟才能打开。有什么想法为什么该行仅在作为脚本运行时才会失败?
答案1
Enter-PSSession 仅供交互使用。如果您想在脚本中(非交互方式)在远程系统上运行命令,则需要使用 Invoke-Command。请运行Get-Help Invoke-Command -Full
以了解更多详细信息。