
PowerShellスクリプトサンプル(Windows Server環境構築 初期設定の一括実行) – 2017年夏ver.
小ネタです。
以前、以下エントリにて「PowerShellスクリプトでOS初期設定を一括で行う」内容について投稿していましたが、ちょっと内容をアップデートした形のものを最近使うようになっていたのでこちらでも公開しておこうと思います。
実行スクリプトサンプル
スクリプトは以下となります。
######################################################################### | |
## OS環境設定Powershellスクリプト | |
## 第1引数:コンピューター名 | |
## 第2引数:AWSデフォルトリージョン | |
## | |
## ※実行前に以下コマンドを実行してスクリプトを実行出来るようにしておく事 | |
## Set-ExecutionPolicy RemoteSigned | |
######################################################################### | |
Write-Host "** ComputerName:" $args[0] | |
Write-Host "** Default Region:" $args[1] | |
## コンピュータ名の変更(強制) | |
Rename-Computer -NewName $args[0] -Force | |
## AWSデフォルトリージョンの設定 | |
Set-DefaultAWSRegion $args[1] | |
## タイムゾーンを変更 | |
tzutil.exe /s "Tokyo Standard Time" | |
## フォルダオプション(拡張子を表示する) | |
Set-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -name "HideFileExt" -Value 0 | |
## フォルダオプション(隠しファイル、隠しフォルダ、隠しドライブを表示する) | |
Set-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -name "Hidden" -Value 1 | |
## Windows ファイアウォールの無効化 | |
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False | |
## make Directory for tools | |
mkdir C:\tools | |
## nkf & gzipの環境変数設定 | |
$path = [Environment]::GetEnvironmentVariable('PATH', 'Machine') | |
$path += ";" + "C:\tools\nkf" + ";" + "C:\tools\gzip" | |
[Environment]::SetEnvironmentVariable('PATH', $path, 'Machine') | |
## Firefox Download & Silent Install | |
## from https://ftp.mozilla.org/pub/firefox/releases/52.0/win64/ja/ | |
Invoke-WebRequest -Uri "https://ftp.mozilla.org/pub/firefox/releases/54.0/win64/ja/Firefox%20Setup%2054.0.exe" -OutFile C:\tools\firefox.exe | |
C:\tools\firefox.exe -ms | |
## Install Chocolatey | |
# https://chocolatey.org/install#install-with-powershellexe | |
# Don't forget to ensure ExecutionPolicy above | |
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) | |
## Install Git by Chocolatey | |
## choco install -y --force git | |
choco install -y git | |
## Install Python3.x by Chocolatey | |
choco install -y python3 | |
## Install curl by Chocolatey | |
choco install -y curl | |
## 1分待機 | |
Start-Sleep -Seconds 60 | |
## OS再起動 | |
Restart-Computer |
使い方
PowerShellコンソールを起動し、上記ファイルを実行可能なパスに保存・作成しておきます。
もしくは以下の形でファイルを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環境を整える際の簡易スクリプトとしてご利用頂ければ幸いです。