web-dev-qa-db-ja.com

PsExecおよびWindows2008 R2:「アクセスが拒否されました」

これが私のシナリオです:

PsExecを使用して、ローカルマシンからサーバー上のIIS 7.0サイトをリモートで起動および停止しようとしています。

いくつかの重要なポイント:

  • ローカルマシンが実行されますWindows Vista
  • サーバーが実行されますWindows 2008 R2
  • 各マシンは別のドメインで実行されます。
  • ローカルマシンのドメインからサーバーのドメインへ一方向の信頼があります。
  • PsExecはドメイン管理者アカウントを使用であり、サーバーマシンのローカル管理者として認証されています。
  • ローカルマシンはエイリアスを介してサーバーを参照します。サーバーの実名は使用しません。

私は次のコマンドを使用しています:

"C:\Program Files\PSTools\psexec.exe" \\(server-alias) -u (server-domain)\(domain-admin) -p (password) C:\Windows\System32\inetsrv\appcmd.exe stop site "Default Web Site"

これはエラーを返します:

PsExec v1.94 - Execute processes remotely
Copyright (C) 2001-2008 Mark Russinovich
Sysinternals - www.sysinternals.com
Could not start PsExec service on (server-alias):
Access is denied.

そして、いくつかの重要なトラブルシューティングのメモ:

  • このコマンドworksサーバーのドメイン内の別のマシン(Windows 2003 R2)から実行された場合。 (ドメイン内
  • このコマンドこれも機能します実行中の別のマシンに対して実行された場合Windows 2003 R2ローカルマシンから; 2つは異なるドメインにあります。 (ドメイン間
  • appcmd.exeの代わりにpingを使用する以外は、同じPsExecコマンドを使用すると失敗します。
  • コマンドは、「管理者として実行」を使用してコマンドプロンプトから実行されました。
  • レジストリキーDisableStrictNameCheckingは、エイリアスの使用を許可するためにサーバーに設定されています。
  • レジストリキーLocalAccountTokenFilterPolicy = 1がサーバーとローカルマシンに設定されています。
  • サーバーでWindowsファイアウォールが実行されていません。
  • UACはローカルマシンで無効になっています。
  • UACはサーバー上でアクティブです。
  • UACでは、サーバーで「管理者承認モード」が無効になっています。これにより、コマンドは(ドメイン間ではなく)ドメイン内で機能するようになりました。

これはWindows 2008 R2に固有の問題であり、おそらくドメインまたは管理者のアクセス許可に沿ったセキュリティ設定に関連していることを示しているようです。しかし、私にはアイデアがありません。あなたが持っているかもしれないどんな提案も大いに感謝されるでしょう!

6
David Elner

管理者以外のユーザーがPsExecを起動している2台のWindows 7コンピューター間でPsExecへの有効な方法を見つけるのに数時間かかりました... UACの無効化(EnableLUA = 0、ConsentPromptBehaviorAdmin = 0、LocalAccountTokenFilterPolicy = 1)が機能せず、ファイアウォールをオフにしましたうまくいかない...

ここで私はうまくいく方法を見つけました-ありがとうJelmerS :(からの情報 PSexecは提供されたユーザー名とパスワードを使用してマシンに接続していません

これは、psexecが、別のユーザーとしてコマンドを実行する前に、ローカル資格情報を使用してADMIN $共有にアクセスしようとするためです。このスレッドによると、psexecを実行する前に資格情報をキャッシュできます:cmdkey.exe/add:MACHINE_NAME_HERE/user:MACHINE_NAME_HERE\Administrator/pass:PASSWORD_HERE psexec.exe\MACHINE_NAME_HERE -i notepad cmdkey.exe/delete:MACHINE_NAME_HERE

よろしく、ピーター

3

Vistaワークステーションで管理者特権のコマンドプロンプトからPSEXECを実行していますか? LocalAccountTokenFilterPolicy = 1を設定しましたか? FAQ:一般的なPSToolsの問題 を参照してください

1
Jim B

テストに使用する同様の環境はありませんが、推奨できるのはこれです。クライアントドメインで、再起動する各Webサイトに1つずつ、バッチスクリプト(.bat)を設定します。 (私はそれらを「restart_site-sitename.bat "。)ドメインごとに1つ作成し、PSExecを含め、そのドメイン内の管理サーバー(ラップトップに何かが起こった場合にすべてを管理できるsysadツールを配置する場所)のディレクトリにすべて保存します。ディレクトリ。

psexec.exe \\(server-alias) C:\Windows\System32\inetsrv\appcmd.exe stop site "WebsiteName"

次に、その管理サーバーに対してpsexecを実行し、代わりにそれらのバッチファイルの1つを呼び出してみます。

"C:\Program Files\PSTools\psexec.exe" \\(server-alias) -u (server-domain)\(domain-admin) -p (password) C:path\to\psexec_and_scripts\restart_site-sitename.bat"
0
gWaldo