web-dev-qa-db-ja.com

PsExec:Win7からWin7へのアクセスが拒否されました(psexesvcは残ります)

私は問題を抱えています、そしてインターネットは解決策を持っていないようです、それで多分ここの誰かが助けることができます。

PsExecを使用してリモートマシンでコマンドラインプロンプトを開始しようとしていますが、「アクセスが拒否されました」というエラーが表示され続けます。ローカルマシンとリモートマシンの両方でWindows7 Enterprise(ローカル:x64、リモートx86)が実行されており、PsExec1.98を使用しています。次のコマンドを使用します。

psexec \\remote -u domain\user -p password -i -d cmd.exe

他のコマンド(-s、-hなどを使用するなど)も試しましたが、違いはないようです。ローカルマシンからリモートマシンのadmin $共有にアクセスできます。イベントビューアは、リモートマシンでログオン(およびログオフ)が発生することを通知します。

また、PsExecはWindowsディレクトリにPSEXESVC.EXEを作成しますが、削除しません!興味深いことに、同じコマンドはWin-7-Professional(x64)で問題なく機能し、逆でも完全に機能します(つまり、リモートマシンから実行してローカルマシンでcmdを開始した場合)。リモートマシンでアンチウイルスとファイアウォールを無効にしても、違いはありませんでした。ローカルで非アクティブ化することはできませんが、エラーが発生しているのではないかと疑っています。

誰かアイデアはありますか?

3
doubleYou

少し遅れて、私は知っていますが、私もこれを解決しようとしています。それはセキュリティレベル/ユーザーアクセスレベルに関係していることがわかりました。

ローカルPCでコマンドプロンプトからpsexecを実行しようとしていて、右クリックして[管理者として実行]を選択してコマンドプロンプトを開始しました。次に、リモートサーバーを対象としてpsexecコマンドを実行し、-uパラメーターにドメイン管理者アカウントを指定します。

ただし、私のローカルアカウントには、リモートマシンではなく、ローカルマシンの管理者権限しかありませんでした。「管理者として実行」を選択しても、実際には「ドメイン管理者として実行」を意味するわけではありません。 (明らかに、当たり前です!)。

したがって、実際には、リモートでドメイン管理者としてメインコマンドを実行しようとしましたが、psexec部分は(管理者以外の)ドメインユーザーアカウントとして実行されていました-適切なものがありませんでしたサーバーの権限。

解決策:コマンドを開始する代わりに、上記のようにプロンプ​​トを表示して、 runas コマンドを使用します。

例:スタート->実行-> runas/user:domain\administrator cmd
次に、psexecコマンドを実行すると、-uフラグは不要になります

または、通常のコマンドプロンプト内から、代わりにこれを行うことができます。

runas/user:domain\administrator "psexec \\ remote cmd"

8
shunty

私にとって有効な唯一の方法は、ネットワーク資格情報を設定することでした。

cmdkey /list:%DOMAIN% | find "%DOMAIN_USER%" >NUL || cmdkey /add:%DOMAIN% /user:%DOMAIN%\%DOMAIN_USER% /pass:%DOMAIN_USER_PWD% >>%LOGFILE% 2>>&1

Runasは、ローカル共有やその他の権限では不可能でした。

2
Oli

すべてを試しても良い結果が得られなかった後、少なくとも私の場合は何が問題なのかを理解しました。ログインしたドメインアカウント(ドメイン管理者ではありませんが、少なくともマシン管理者に対してローカル)を持つマシンと、管理者権限を持つローカルアカウントを持つ他のいくつかのマシンがありました。 Psexecはそれらすべてで動作しましたが、ローカル管理者権限を持つドメインアカウントを使用して私のマシンで動作していませんでした。 psexecがローカル管理者アカウントで機能していたマシンで、ローカル管理者権限を持つドメインアカウントでログインしましたが、当然のことながら機能しませんでした。

つまり、呼び出しの送信元のマシンにローカルなadminアカウントを使用して、リモートサーバーへのpsexec呼び出しを開始する必要があります。

これをpsexec文字列の前に挿入するだけで、二重引用符で囲まれるようになります。

runas/user: ""

このようにpsexecは実行されますが、ローカル管理者アカウントを使用し、実際にローカル管理者アカウントでログインする必要はありません。

2
Iskren P.

これは本当に遅いことは知っていますが、Googleでの最初の検索なので、返信します。

多くの調査の結果、システム名の前にユーザー名とパスワードが必要であることがわかりました。

psexec \\ remote -u domain\user -p password -i -d cmd.exe

このようにしてください:

psexec -u domain\user -p password -i -d \\ remote cmd.exe

1
TheAnnihilator

サーバー共有(作業中のPC、ドメイン管理者としてログイン)から「RemotePC」にリモートでプログラムをインストールしたかった。

PsExecは、cmd.exeのような「ローカル」プログラム(「RemotePC」に対してローカル)を使用してRemotePCで動作しました。

PsExec.exe \\ RemotePC cmd.exe

最初、私の完全なコマンドは次のようになりました。

PsExec.exe \\ RemotePC "\\ server\sharename\path to program\setup.exe"/s/v "/ qn IP_SERVER = 192.168.1.10 PORT = 112 INSTALLDIR = \"%ProgramFiles(x86)%\ path\\ 「」

しかし、サーバー共有からのセットアップは開始されませんでした。エラーメッセージ:

PsExecは、RemotePCで\\ server\sharename\path to program\setup.exeを開始できませんでした

アクセスが拒否されました

ここや他のウェブサイトで見つけたPsExec -u administrator -p passwordの追加やcmd.exe /cの使用など、多くの解決策を試しましたが、うまくいきませんでした。

最後に、動作するコマンドを見つけました(commandlineの周りに余分な引用符が付いた/sがトリックを行いました):

PsExec.exe \\ RemotePC -u Administrator -p AdminPassword cmd.exe/s/c "コマンドライン"

完全に機能するコマンドは次のようになります。

PsExec.exe \\ RemotePC -u Administrator -p AdminPassword cmd.exe/s/c "" \\ server\sharename\path to program\setup.exe "/ s/v"/qn IP_SERVER = 192.168.1.10 PORT = 112 INSTALLDIR =\"%ProgramFiles(x86)%\ path\\" ""

1
Martin Fay