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

Сценарий Powershell, который удаленно выполняет другую оболочку PowerShell

Это долгая история, но мне нужно создать триггер SQL, который удаленно выполняет сценарий, который удаленно выполняет другой сценарий (да, я знаю). Я использую PowerShell.

Я начал в конце:

Get-Service –Name “service” –ComputerName “Server2” | Set-service –Status Stopped

Get-Service –Name “service” –ComputerName “Server2” | Set-service –Status Running

Это прекрасно работает. Затем скрипт, который будет выполняться на триггере:

Invoke-Command –computername “cluster” –command {d:\adminscripts\RestartServer2Service.ps1}    

(да, я использую NLB-кластер, и он читает сценарий)
Но я получаю следующее:

Не удается найти службу с названием службы "service".

Есть предположения? Любая помощь будет оценена по достоинству. Спасибо

-command не является допустимым параметром для Invoke-Command. Использовать -FilePath вместо этого для запуска вашего второго скрипта.
Кроме того, убедитесь, что у вас есть соответствующие учетные данные для выполнения этих сценариев.

Это почти наверняка проблема с двумя переходами. Если я использую Enter-PSSession для подключения к ServerA, а затем запускаю Get-Service spooler -ComputerName ServerB, Я получаю ту же самую ошибку "не могу найти службу с именем службы".

Однако, если я убегу Enter-PSSession ServerA -Authentication CredSSP -Credential (Get-Credential), то команда Get-Service работает нормально.

Проблема заключается во втором переходе - переходе с первого удаленного компьютера на второй (и третий); это «слишком длинный мост» для протокола аутентификации по умолчанию, используемого удаленным взаимодействием PS. Решение, которое я использую для такого рода проблем, - CredSSP.

Вы можете найти более подробную информацию о проблеме и о том, как включить / использовать CredSSP в эта статья Scripting Guy.