lisz-works

プログラミングと興味を貴方に

PSToolsで外部コンソールからWindows10リモート実行するときに必要な設定

【スポンサーリンク】

コマンドプロンプト

PSTools(PSExec)という、Windowsに対して外部のWindowsからコンソールへ指令を出して実行してもらうツールを使おうとしました。

そのとき、実行するためにしたことのまとめです。

このツールだけでなく、その他のコンソールログインを使用するアプリでも、「設定していないとうまくいかない」可能性があります。

成功するためにした方法

実際に使ってみて、成功するためにした設定などを上げていきます。

ぼくの環境でPSToolsを使った時は、これらを全て設定しないと、うまくいきませんでした。

ポート開放

PSToolsで使用する、TCPのポート番号

  • 135
  • 445
  • 1025-65535

を、送受信ともポート開放しました。

もしかしたら受信だけでよかったのかも知れませんが……

Windows Defender/Windows ファイアウォールでの、ポート開放の方法については、コチラを参照してください。

www.lisz-works.com

ちなみにポート番号の入力は、カンマ区切りで連続すると、一気に登録できました。

ポート番号入力

UACとレジストリ

UAC*1でブロックされないようにする必要がありました。

UAC自体をOFFにするか、レジストリを追加して、実行可能にしてもらう必要があります。
もしかしたらこれは、PSTools特有のことかもしれないので、他のアプリ等々では不要かもしれません。

レジストリに追加する場合は、コチラを登録します。

項目
パス HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
名前 LocalAccountTokenFilterPolicy
REG_DWORD
1

UACをOFFしたい場合は、スタートメニューを開いて「uac」で検索すると楽ちんです。

パスワードなしが対象の場合のポリシー

Windowsにはポリシー設定という細かな制約設定のようなものがあります。

今回ぼくの実施しなければならない環境では、相手のPCがパスワードなしアカウントでした。

Windows10のデフォルトのポリシー設定に

空のパスワードの使用をコンソール ログオンのみに制限する

ポリシー設定

というものがあります。

これがONだと、空パスワードでアクセスしにいったときに弾かれてしまいます。

IPアドレスは先頭に「\」を入れる

アクセスするIPアドレスを指定するとき、先頭に「\\」が必要でした。

例えば

192.168.0.11

というIPアドレスにアクセスしたい場合、

\\192.168.0.11

と記述する必要がありました。

localhost相手でも

\\localhost

とする必要があります。

ドメイン参加ユーザへのアクセスはドメイン指定する

ドメインに参加しているユーザへのアクセスの場合は、IPアドレスを指定するときにドメイン名を入れます。

例えば

  • ドメイン : MYDOMAIN
  • ユーザ名 : User

の場合、

MYDOMAIN\User

のように入力します。

管理者権限のコンソールを使う

コマンドプロンプトにしろ、Power Shellにしろ、管理者権限のものを使用する必要がありました。

成功したときの表示

PSToolsの場合、成功するとこのような表示がされます。

PS C:\PSTools\PSTools> .\PsExec.exe \\localhost ipconfig

PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com



Windows IP 構成


イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe80::2025:b1e:516a:7557%12
   IPv4 アドレス . . . . . . . . . . . .: 192.168.0.100
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .:
                (中略)
ipconfig exited on localhost with error code 0.

普通のipconfigを実行したときと同じ結果が表示されます。

ただしコレは、リモート先で実行されたipconfigの値です。
なので、リモート先PCでipconfigしたものと、同じものが表示されていたら成功となります!

この例の場合は、localhostなので、自分のPCで実行したものと同じですが(笑)

ドメインに参加したユーザだと、ドメイン名を入れないとNG。

ドメイン名を入れないと、こんな感じで怒られます。

PS C:\work\PSTools\PSTools> .\PsExec.exe \\localhost -u lis -p mypass ipconfig

PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com


PsExec could not start ipconfig on localhost:
ユーザー名またはパスワードが正しくありません。

ドメイン名付きにして実行してみます。

PS C:\work\PSTools\PSTools> .\PsExec.exe \\localhost -u MYDOMAIN\lis -p mypass ipconfig

PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com



Windows IP 構成


イーサネット アダプター イーサネット:
                (中略)
ipconfig exited on localhost with error code 0.
PS C:\work\PSTools\PSTools>

こうするとうまく動きます。

参考

コチラを参考にしました。ありがとうございました。

technet.microsoft.com

あとがき

PSToolsで外部コンソールからWindows10リモート実行する方法についてでした!

仕事でちょっと必要になって、初めて知ったツールだったんでした。

SSHみたくコンソールでいろいろ実行したいときに便利ですね。

PSTools一式をダウンロードしちゃえば、動かすためのサーバ側は地味にWindows標準インストールされていて、自動で受け付けてくれます。
なのでリモート側は、特にアプリを入れる必要が無いのが利点ですね。

設定は必要ですが……

使い方とかについても、別途書いていけたらと思いますー。

*1:ユーザアカウント制御