●前提条件
・インストールするソフトウェアがサイレントインストールに対応していること
・ActiveDirectoryドメイン環境であること
・ユーザーアカウント制御(UAC)が無効であること
・管理共有が有効であること
・実施ユーザーはDomainAdminsグループに所属するユーザーであること
・サーバ間でSMBによる通信ができること(NW機器による遮断がないこと)
・Windowsファイアウォールが無効であること
・各サーバでPowerShellが利用できること
・各サーバでPowerShellが「Get-ExecutionPolicy:RemoteSigned」であること
・各サーバでWinRMサービスのスタートアップ種類が遅延開始であること
・各サーバでWinRMサービスが起動していること
●環境
OS:WindowsServer2012R2(ActiveDirectoryドメイン環境)
リモート制御サーバA(1台)
リモート先サーバB(N台)
●概要
インストーラ用フォルダを、各サーバに作る。
作成後、インストーラを各サーバにコピーする。
リモートコマンドより、各サーバでインストーラをたたく。
●流れ
・資材フォルダの作成
・資材の配置
・資材のコピー
・リモートインストール
・インストールの確認
・資材の削除
リモート制御サーバへログインする。
DomainAdminsにてログインすること。
①リモート制御サーバにて資材作成、配置
以下は例
・Dドライブ直下に「remoteinstall」フォルダ作成
・「remoteinstall」フォルダにインストーラ(exe)や、
exeを実行するためのbatファイルを配置
②資材のコピー準備 リモート先サーバにフォルダ作成
PS C:\WINDOWS\system32> mkdir \\リモート先サーバホスト名\D$\remoteinstall
③資材のコピー リモート先サーバに対してひたすら資材を配布する
PS C:\WINDOWS\system32> robocopy "D:\remoteinstall" "\\リモート先サーバホスト名\D$\remoteinstall" /S /E /V /R:0 /W:0 /TEE
-------------------------------------------------------------------------------
ROBOCOPY :: Windows の堅牢性の高いファイル コピー
-------------------------------------------------------------------------------
開始: 2018年2月21日 22:12:58
コピー元 : D:\remoteinstall
コピー先 : \\リモート先サーバホスト名\D$\remoteinstall
ファイル: *.*
オプション: *.* /V /TEE /S /E /DCOPY:DA /COPY:DAT /R:0 /W:0
------------------------------------------------------------------------------
0 D:\remoteinstall
新しいディレクトリ 3 \\リモート先サーバホスト名\D$\remoteinstall
100% 新しいファイル 3 aaa.txt
100% 新しいファイル 1599 AcroRd32.exe
100% 新しいファイル 811 __pycache__.lnk
------------------------------------------------------------------------------
合計 コピー済み スキップ 不一致 失敗
Extras
ディレクトリ: 2 1 0 0 0 0
ファイル: 3 3 0 0 0 0
バイト: 2.3 k 2.3 k 0 0 0 0
時刻: 0:00:00 0:00:00 0:00:00 0:00:00
コピーに失敗した場合、プロンプトに結果が出力されるため、適時再コピーする。
コマンドオプションは以下リンクを参照。
https://www.pg-fl.jp/program/dos/doscmd/robocopy.htm
④-1リモートインストール:パターン1(bat不要の場合)
PS C:\WINDOWS\system32> Invoke-Command -ComputerName "リモート先サーバホスト名" -ScriptBlock { cmd /c D:\remoteinstall\なんとか.exe exeの実行オプション(/なんとか) }
④-2リモートインストール:パターン2(batを経由する場合1)
PS C:\WINDOWS\system32> Invoke-Command -ComputerName "リモート先サーバホスト名" -ScriptBlock { cmd /c D:\remoteinstall\なんとか.bat }
④-3リモートインストール:パターン3(batを経由する場合2)
PS C:\WINDOWS\system32> Invoke-Command -ComputerName "リモート先サーバホスト名" -ScriptBlock { wmic process call create "D:\remoteinstall\なんとか.bat" }
ここでご紹介するリモートインストール方法は、以上の3パターンに分かれます。
パターン3はInvokeコマンドとWmicのコマンド組み合わせ。
※パターン3がつらいのはインストールが完了したかどうかが見えないところ。
というわけで、15分程度待ってから以下で確認する。
インストール確認
PS C:\WINDOWS\system32> Invoke-Command -ComputerName "リモート先サーバホスト名" -ScriptBlock { Get-WmiObject Win32_Product | Where-Object {$_.Version,$_.Name -match "Micro*"} }
Name : Update for Japanese Microsoft IME Standard Dictionary
Vendor : Microsoft Corporation
Version : 15.0.2013
コマンドライン上の「-match "Micro*"」とある"Micro*"の箇所は、
インストールするソフトウェア名とワイルドカード。
インストールするソフトウェア名によって適時変えること。
資材の削除
PS C:\WINDOWS\system32> rmdir /S \\リモート先サーバホスト名\D$\remoteinstall
\\リモート先サーバホスト名\D$\remoteinstall、よろしいですか (Y/N)? y
●余談
こういう辛さから逃れるにはやっぱりエンターテインメント。
ジェニファーロペスはいつだって僕らのお姉さん。
この動画を見た瞬間、コマンドばっかり見ていた私の視力が復活するかと思いました。
Jennifer Lopez - Love Don't Cost a Thing