22964


Windows PowerShell でInvoke-Commandコマンドを実行したところ下記のエラーメッセージが出ました。  
Invoke-Command -ScriptBlock { &"D:\Program Files\C.exe" 引数・・ } -ComputerName
"B"

エラーメッセージ  
Could not connect to ～ database: ユーザー 'NT AUTHORITY\ANONYMOUS LOGON'
はログインできませんでした。

実行環境等は、ローカルPCからリモートデスクトップ接続で"A"(Windows Server 2012) に接続し、  
"A"サーバーのWindows PowerShellからコマンドを実行。"B"(Windows Server 2012)に存在する"C.exe"を実行すると  
更に別のサーバー"D"(Windows Server 2012)のSQL ServerのDBを参照して値を返します。

"D"サーバーのDBを参照しようとして接続できないためエラーメッセージされるようです。  
リモート先からさらに別のマシンのDBを参照することが上記のコマンドでは無理なのでしょうか。  
解決策がありましたらお願いします。


CC BY-SA 3.0
2016-03-10T01:14:13.770
22963
2019-08-19T11:56:14.837
14721
question
powershell
PowerShellでInvoke-Commandコマンド実行時エラーについて


"C.exe"でのSQL
Server接続が「統合Windows認証」となっているためだと思われます。この場合Windows上の実行ユーザーが接続権限を持っている必要がありますので、
[`Invoke-Command`](https://technet.microsoft.com/ja-
jp/library/hh849719.aspx)の`-Credential`オプションで"D"にログインできるユーザーを指定すればよいのではないでしょうか。  
例えば"B"にリモートデスクトップで接続して"C.exe"を実行した場合はエラーが出ないのであれば、そのログインユーザーを指定してみてください。

また"C.exe"の使用する接続文字列をWindowsアカウントと関係のない「SQL Server認証」に変更することでも回避できます。


CC BY-SA 4.0
2016-03-10T01:28:28.870
22964
2019-08-19T11:56:14.837
2019-08-19T11:56:14.837
19769
5750
22963
answer


ご回答ありがとうございます。いろいろ調べた結果、ダブルホップを使用したリモートコマンドの実行(CredSSP)で解決できました。


CC BY-SA 3.0
2016-03-11T01:10:47.733
23006
2016-03-11T01:10:47.733
14721
22963
answer