Я написал скрипт для перезапуска нескольких сайтов ASP.NET на удаленном сервере:
$computerName = #...
$password = #...
$secureStringPassword = ConvertTo-SecureString -AsPlainText -Force -String $password
$userName = #...
$credential= New-Object System.Management.Automation.PSCredential ($userName, $secureStringPassword)
$websiteNames = #..., #..., #...
Get-PSSession -ComputerName $computerName -Credential $credential | Remove-PSSession
$psSession = New-PSSession -ComputerName $computerName -Credential $credential
Invoke-Command -Session $psSession -ScriptBlock { $websiteNames | foreach{ Stop-Website -Name $_ } }
Invoke-Command -Session $psSession -ScriptBlock { $websiteNames | foreach{ Start-Website -Name $_ } }
$psSession | Remove-PSSession
По некоторым причинам мои Invoke-Command
не работают должным образом, у меня появляется следующее сообщение об ошибке:
Невозможно проверить аргумент в параметре «Имя». Аргумент нулевой. Укажите допустимое значение для аргумента и попробуйте снова выполнить команду.
Когда команды запускаются после Enter-PSSession
, он отлично работает в -ScriptBlock
, он как бы портит параметр -Name
, есть идеи, как это исправить?