$username = "username"
$password = convertto-securestring "*****" -asplaintext -force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password
$session = New-PSSession -computername 'testserver' -credential $cred
Invoke-Command -Session $session -ScriptBlock {New-NetIPAddress -IPAddress 10.201.10.10 -InterfaceAlias 'LoadBalancer' -AddressFamily IPv4 -PrefixLength 24}
Remove-PSSession -Session $session
Приведенный выше скрипт отлично запускается с сервера VMM, но дает сбой, когда я включаю его в план восстановления сайта.
Сообщение об ошибке от Azure: Исключение скрипта: Невозможно проверить аргумент для параметра «Сессия». Аргумент является нулевым или пустым. Укажите аргумент, который не является нулевым или пустым, а затем повторите команду.
Где я ошибаюсь?
решение1
Я не слишком хорош в написании сценариев, но надеюсь, что мои доводы помогут найти правильный ответ.
$session = New-PSSession -computername 'testserver' -credential $cred -> Создает сеанс на указанном компьютере. $session -> Поскольку этот сеанс создан, я не думаю, что вам это нужно. ... $session - Поскольку сеанс уже запущен. Я не вижу необходимости вызывать тот же самый еще раз. Remove-PSSession $session -> Передаваемая вами переменная предназначена для создания еще одного сеанса. А не для удаления существующего. Я думаю, вам нужно просто указать здесь имя сервера или идентификатор сеанса на указанном сервере.
решение2
Нашел решение этой проблемы. Несмотря на то, что VMM успешно выполнил мой скрипт, Azure показывал ошибку. В основном он жаловался на самую последнюю строку в скрипте. Изменил последнюю строку следующим образом, и теперь все работает нормально.
Удалить-PSSession -Session $session