ちょっと話題の記事

PowerShellスクリプトサンプル(Windows Server環境構築 初期設定の一括実行) – 2017年夏ver.

2017.07.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

小ネタです。

以前、以下エントリにて「PowerShellスクリプトでOS初期設定を一括で行う」内容について投稿していましたが、ちょっと内容をアップデートした形のものを最近使うようになっていたのでこちらでも公開しておこうと思います。

実行スクリプトサンプル

スクリプトは以下となります。

使い方

PowerShellコンソールを起動し、上記ファイルを実行可能なパスに保存・作成しておきます。

setup-windows-env-by-powershell_01

もしくは以下の形でファイルをPowershellのコマンドを使いダウンロードしておきます。(gistからダウンロードした場合文字コードに不都合が生じるのでファイルダウンロード後、Shift_JISに一旦変換しています)

PS D:\> Invoke-WebRequest -Uri "https://gist.github.com/shinyaa31/7fcb331285bc62ad6b872ae87359f3de/raw/2e39ddafa05fee12251928db6850e3703f420324/setup-windows-os-setting.ps1" -OutFile D:\setup.ps1
PS D:\> Get-Content -Encoding UTF8 D:\setup.ps1 | Set-Content D:\setup-windows-os-setting.ps1

実行には、実行ポリシーの付与が必要です。以下の形でファイルを実行可能な形としておいてください。

Windows PowerShell
Copyright (C) 2014 Microsoft Corporation. All rights reserved.

PS C:\Users\Administrator> Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y
PS C:\Users\Administrator>

実行時の引数には2つ要素を必要とします。「マシン名」と「AWSのデフォルトリージョン」です。マシン名は英数字&ハイフンで15文字以内、リージョンについてはOSを立ち上げたリージョンを指定して実行します。実行が始まると諸々の操作を行い、暫くするとOS再起動を行います。再起動が完了すれば設定も完了となります。

D:\>powershell .¥setup-windows-os-setting.ps1 CM-WIN2012-SV us-east-1

まとめ

という訳で個人的に利用しているPowerShellスクリプトのご紹介でした。一番綺麗な形、一発で全て実行させるという形だと以下のようにCloudFormationの「AWS::CloudFormation::Init」を使って"CloudFormation上でPowerShellを実行する"のが1つのゴールになると思いますが、実行可能なスクリプト群を書き上げるまでに若干の手間が伴うので、それならば「OSが立ち上がってからのコマンド実行はPowerShell(で一発)でも良いんじゃないか」と思い書いてみた次第です。Windows環境を整える際の簡易スクリプトとしてご利用頂ければ幸いです。