Назад | Перейти на главную страницу

Команда 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 из-за некоторых проблем с синхронизацией ... открытие сеанса занимает несколько секунд. Есть идеи, почему эта строка не сработает только тогда, когда она работает как скрипт?

Enter-PSSession предназначен только для интерактивного использования. Если вы хотите запускать команды в удаленной системе в сценарии (не интерактивно), вам нужно вместо этого использовать Invoke-Command. Пожалуйста беги Get-Help Invoke-Command -Full Больше подробностей.