このページの本文へ

Windows Info 第130回

PowerShell Remotingで自宅にあるたくさんのWindowsマシンを管理する

2018年06月17日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

自宅にたくさんのWindowsマシンを持っている人も多いのでは
ネットワーク経由でまとめて管理する

 自宅のように、ActiveDirectory(Windowsドメイン)のない環境で、多数のWindows PCを利用している場合、それぞれのマシンを管理するのは結構大変だ。

 稼働しているPCが3~4台を越えると、バージョンの把握さえおぼつかなくなることがある。こうしたときに役立つのが、PowerShellの持つ、PSRemotingと呼ばれる機能だ。LinuxのSSH(Secure Shell)やかつてのリモートシェル(rsh)と同じように、他のPCで動作するPowerShellにログインしたり、コマンドを実行させることができる。

 これを使うと、表示はローカルマシンのPowerShellウィンドウで、実際の実行はネットワーク経由でリモート側PCにさせることができるようになる。PowerShellは、そもそもシステムの管理用に作られているので、サービスの制御やOSバージョンなどのシステム情報、その他さまざまなマシンの管理機能が利用できる。これを使えば、たとえばローカルマシンすべての特定のサービスを自動起動にするといったことが可能になる。

 なお、以下の設定に先立ち、「ExecutionPolicy」を設定しておく必要がある。これについては、連載102回の「マイクロソフト版のOpenSSHをWindows 10にインストールする」で解説したように、管理者権限でPowerShellを起動して、以下のコマンドを実行しておく。

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

リモートによるWindows PCの管理

 Windowsでは、NTの時代からシステムをリモートで管理することが可能になっていた。たとえば、システム情報の管理などに関してはWMI(Windows Management Instrumentation)があり、サービスを制御するsc.exeコマンドも、リモートでの制御が可能だっだ。

 しかし、セキュリティが重視されるにつれ、こうした手法でも、利用に先立ち、なんらかの設定が必要になった。リモートで設定を変更することは、マルウェアなどの格好の餌食となるからだ。このため、たとえばscコマンドを利用する場合、現在では先だって、net useコマンドを(net.exe useサブコマンド)を使って、プロセス間通信である「ipc$」を立ち上げておく必要がある。また、手動でipc$を接続すると、接続はそのままになるため、scコマンドなどの終了後には接続を削除しておかねばならない。

 PSRemotingも起動に先立ち、若干の設定が必要となるほか、実行時にパスワードによるユーザー認証などが必要となる。しかし、個々のマシンで2つのコマンドを実行すれば、すぐにPSRemotingが利用可能になり、ネットワーク内のマシンの管理を一ヵ所で集中してできるようになる。

 別の方法として、すべてのマシンにSSHサーバーを導入して、SSHからリモートマシンにログインして、コマンドプロンプトからpowershellを起動するやり方がある。しかし、OpenSSHなどのインストールといった手間があるのと、接続後にpowershellを起動する必要があるなど手間がかかる。なお、PSRemotingは、設定により、ネットワーク接続をSSHとすることも可能だが、やはりPSRemotingの標準的な方法よりも設定の手間がかかってしまう。

 そういうわけで、現時点では、ワークグループネットワーク(=非アクティブディレクトリ)で多数のPCをリモート管理するのは、PSRemotingが最も簡単といえる。

PSRemotingを実際に設定する

 PSRemotingを利用するには、管理される各マシンを設定する必要がある。また利用時には、管理される各マシンでAdministrator権限を持つユーザーアカウントを利用する。このため、すべてのマシンに、日常的に利用しているアカウントなどを登録して、ユーザーの種別を管理者としておくと便利だ。

 もちろん、それぞれのマシンで別々のユーザーアカウントを使ってもかまわないが、そうなると、マシンとユーザーアカウントの対応をすべて覚えなければならず、かなり管理が面倒になる。あるいは、逆に管理用のアカウントを作り、すべてのマシンに登録しておいてもよい。PSRemotingでは、接続のたびにユーザーアカウントとパスワードを指定するため、なにか1つ管理者アカウントがあればよく、必ずしもPowerShellを立ち上げているローカルアカウントと同じでなくてもいい。

 ここでは、利用するPCやユーザーアカウントを以下のように仮定して解説をすすめる。これらは、実際には、各自の利用環境に合わせて変更してほしい。

・リモート管理されるPCの名前:remote-pc
・管理を行うローカルマシン:local-pc
・共通で使う管理者アカウント:admin-user

 まずは、ローカルマシンで管理者権限でPowerShellを立ち上げる。ここでPSRemotingを有効にする。以下の2つのコマンドを実行する。なお、リモート側でも同じコマンドを実行するので、PowerShellのスクリプトファイル(.ps1)を作ると便利だ。

Enable-PSRemoting -SkipNetworkProfileCheck
Set-Item WSMan:\localhost\Client\TrustedHosts -Value *

 まずは、手動で1回やってみると理解が早い。最初のコマンドは、PowerShellでPSRemotingを有効にするコマンド。実際にはスクリプトが呼び出され、ユーザー権限やファイアウォールの変更など一連の作業を行う。

PSRemotingは、2つのコマンドで有効にする。最初のコマンドでPSRemotingを有効にし、2つめのコマンドは、ローカルマシンをすべて信頼する設定

 2つめのコマンドは、ローカルネットワークに接続しているマシンをすべて信頼するための設定。本来は、1台1台設定すべきなのだろうが、かなり面倒なので、ローカルマシンをすべて信頼させている。リモートPCを登録するなら、コマンドの最後の部分の「*」を「"remote-pc1,remote-pc2,remote-pc3,……"」などのようにコンピュータ名をカンマで区切ったものをダブルクオートで括って指定する。自分自身の指定も必要なので、ローカルのすべてのマシンで同じコマンドでかまわないのだが、マシンが追加されるたびにすべてのマシンでホストを登録する必要がある。

 スクリプトは、前記のコマンドを単純に入れたテキスト型式でよくメモ帳などでも作成できる。ただし、拡張子を「.ps1」などとしておく(仮にPSR.ps1とする)。

#
# PowerShell Remoting Enable script
#
# Please Run in Adminstrator
#
Enable-PSRemoting -SkipNetworkProfileCheck
Set-Item WSMan:\localhost\Client\TrustedHosts -Value *

 これをすべてのマシンからアクセス可能なネットワーク共有フォルダ(\\local-pc\shareとする)などに入れておき、各マシンで、管理者権限でPowershellを起動し、共有ファイルのUNCを使って以下のように起動させる。

\\local-pc\share\PSR.ps1

 さて、リモート側の設定が終了したら、次は接続テストをする。

PSRemotingの接続テスト

 PSRemotingで接続テストをするには、以下のようなコマンドにより、リモート側にログインしてみる。

New-PSSession -ComputerName [リモートPCのコンピュータ名] -Credential リモートのアカウント名

 これで、下の画面のようにセッションのリストが表示され、エラーが出なければOKだ。なお、コンピュータ名のところを「localhost」として自分自身に接続させることもできるので、最初のマシンは、これでテストするといいだろう。

PSRemotingが正しく設定されていれば、ローカルマシン(自分自身)に対してセッションを作ることができるようになる。また、-ComputerNemeの後にコンピュータ名を記述すれば、他のマシンに対してセッションを作ることができる

 なお、このあと、

Enter-PSSession 1

とすると、前記のリスト先頭のID番号を指定してリモート側にログインできるようになる(上記コマンド最後の数字がセッションのID)。リモート側のセッションにログインすると、プロンプトが変化する。また、一度作成したセッションは、以下のコマンドでIDを指定して削除できる。

Remove-PSSession ID番号

 PSRemotingは、一回設定すれば、あとは、すべて1台のマシンからすべてのマシンを制御できるようになる。最初はちょっと手間だが、その後は管理が格段にラクになる。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン