1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PowerShellとbatを活用したソフトウェアのリモートインストール方法

Last updated at Posted at 2018-02-21

●前提条件

 ・インストールするソフトウェアがサイレントインストールに対応していること
 ・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 の堅牢性の高いファイル コピー

-------------------------------------------------------------------------------

  開始: 2018221 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

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?