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

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

Clock Icon2017.07.18

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

小ネタです。

以前、以下エントリにて「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コンソールを起動し、上記ファイルを実行可能なパスに保存・作成しておきます。

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環境を整える際の簡易スクリプトとしてご利用頂ければ幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.