PSTools(PSExec)という、Windowsに対して外部のWindowsからコンソールへ指令を出して実行してもらうツールを使おうとしました。
そのとき、実行するためにしたことのまとめです。
このツールだけでなく、その他のコンソールログインを使用するアプリでも、「設定していないとうまくいかない」可能性があります。
- 成功するためにした方法
- ポート開放
- UACとレジストリ
- パスワードなしが対象の場合のポリシー
- IPアドレスは先頭に「\」を入れる
- ドメイン参加ユーザへのアクセスはドメイン指定する
- 管理者権限のコンソールを使う
- 成功したときの表示
- 参考
- あとがき
成功するためにした方法
実際に使ってみて、成功するためにした設定などを上げていきます。
ぼくの環境でPSToolsを使った時は、これらを全て設定しないと、うまくいきませんでした。
ポート開放
PSToolsで使用する、TCPのポート番号
- 135
- 445
- 1025-65535
を、送受信ともポート開放しました。
もしかしたら受信だけでよかったのかも知れませんが……
Windows Defender/Windows ファイアウォールでの、ポート開放の方法については、コチラを参照してください。
ちなみにポート番号の入力は、カンマ区切りで連続すると、一気に登録できました。
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>
こうするとうまく動きます。
参考
コチラを参考にしました。ありがとうございました。
あとがき
PSToolsで外部コンソールからWindows10リモート実行する方法についてでした!
仕事でちょっと必要になって、初めて知ったツールだったんでした。
SSHみたくコンソールでいろいろ実行したいときに便利ですね。
PSTools一式をダウンロードしちゃえば、動かすためのサーバ側は地味にWindows標準インストールされていて、自動で受け付けてくれます。
なのでリモート側は、特にアプリを入れる必要が無いのが利点ですね。
設定は必要ですが……
使い方とかについても、別途書いていけたらと思いますー。
*1:ユーザアカウント制御