web-dev-qa-db-ja.com

別の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」のサービスが見つかりません。

何かご意見は?どんな助けでもありがたいです。ありがとう

1
Horaceman

これはほぼ間違いなく2ホップの問題です。 Enter-PSSessionを使用してServerAに接続し、_Get-Service spooler -ComputerName ServerB_を実行すると、まったく同じ「サービス名のサービスが見つかりません」というエラーが発生します。

ただし、Enter-PSSession ServerA -Authentication CredSSP -Credential (Get-Credential)を実行すると、Get-Serviceコマンドは正常に実行されます。

問題は、2番目のホップ(最初のリモートコンピューターから2番目(および3番目)へのホップ)です。これは、PSリモーティングで使用されるデフォルトの認証プロトコルにとって「ブリッジが遠すぎます」。この種の問題に使用するソリューションはCredSSPです。

問題の詳細とCredSSPを有効化/使用する方法については、 このScripting Guyの記事 を参照してください。

0
jbsmith

-commandInvoke-Commandの有効なパラメーターではありません。代わりに-FilePathを使用して、2番目のスクリプトをトリガーします。
また、これらのスクリプトを実行するための適切な資格情報があることを確認してください。

1
slybloty