## やること ##
# 1.WSFC(Windows Server Failover Clustering)の情報を、
# Get-Clusterや、Get-ClusterResourceなど複数の参照コマンドレットを利用し、採取する
#
# 2.Excelの設計書と比較するので、CSV形式で採取する
# 出力するCSVファイルは、「ホスト名_参照コマンドレット名.csv」と名前を付けて、1つのフォルダに出力する
#
# 3.参照コマンドレットのどれかが失敗した場合に、このスクリプトのログに出力する
# このスクリプトのログは2と同じフォルダに出力する
#
# 4.実行したい参照コマンドレットが増えた場合に、簡単に追加できるようにする
#
# CSV出力フォルダ作成 → メイン処理関数定義 →
# 前処理関数(メイン処理に渡す)定義 → 前処理関数を実行(引数1)
# ↓ここからPowershell(PS1)はじまり
# 日付
$TODAY = Get-Date -format "yyyy-MMdd-HHmm"
# ホスト名
$HOSTNAME = Invoke-Expression -Command hostname
# CSV出力先フォルダ定義
# ※ $OUTDIRで定義するディレクトリ配下に、「yyyy-mmdd-hhmm_ホスト名__WSFC_Getinfo」という名前で作成
$OUTDIR = "c:\work"
$OUT = "${OUTDIR}\${TODAY}_${HOSTNAME}_WSFC_Getinfo"
# CSV出力先フォルダの作成
$ErrorActionPreference = "Stop"
# フォルダ作成に失敗した場合、処理を終了するため、エラーストップを設定
# .NET の例外は、try{}catch{} で取得できる
# コマンドレットの例外は、$ErrorActionPreferenceを設定する
# 詳しくは→http://tech.guitarrapc.com/entry/2013/07/22/000738
try {
# CSV出力先作成
mkdir ${OUT}
# 実行結果を変数格納
$RESULT = "フォルダ名【${OUT}】正常に作成できました"
} catch [Exception] {
# エラー時に実行結果の変数書き換え
$RESULT = "フォルダ名【${OUT}】作成に失敗しました"
# 出力先作成に失敗した場合、終了
exit 100
} finally {
# 結果を標準出力
Write ${RESULT}
# 結果をログ出力
Write ${RESULT} | Out-File ${OUT}\WSFC_Getinfo_${TODAY}.log
}
# CSV出力処理
## メイン処理関数
### 第一引数で受け取ったコマンドラインを実行して、結果を取得
### 第二引数で受け取ったコマンドレット名を、メッセージに付与し、
### 結果をこのスクリプトのログに出力する
function main {
# 受け取った2つの引数を変数格納
param($param1,$param2)
try {
# 第一引数($param1)をコマンドとして実行
## &でコマンドとして扱う
& ${param1}
$RESULT = "【${param2}】の処理が正常に終了しました"
} catch [Exception] {
$RESULT = "【${param2}】の処理が異常終了しました"
} finally {
Write ${RESULT}
Write ${RESULT} | Out-File ${OUT}\WSFC_Getinfo_${TODAY}.log -Append
}
}
## 前処理用関数
### メイン処理関数に渡す第一引数(コマンド名)、
### 第二引数(実行するコマンドライン)を作成
function watasu {
# 第一引数は実行コマンド名
param($param1)
## 第一引数の実行コマンド名を${COMMAND}に格納。
$COMMAND = ${param1}
## メイン処理関数で実行するコマンドライン作成
### 実行コマンドをパイプでExport-csvに渡し、CSV出力。
### 上で作成したCSV出力先に、UTF8で出力。
### 「ホスト名_コマンド名.csv」で出力
$COMMANDLINE = {& ${COMMAND} | Export-Csv -Encoding UTF8 ${OUT}\${HOSTNAME}_${COMMAND}.csv}
## 実行するコマンド名を第一引数に、
## 実行するコマンドラインを第二引数にして、メイン処理関数を呼び出し
main ${COMMANDLINE} ${COMMAND}
}
## 前処理用関数に第一引数としてコマンド名を渡し、実行させる
## コマンドを追加したい場合、一番下に同じ形式で追加すれば、CSVで結果を出力してくれます
## 増えてきたら外ファイルに持たせます
## やり方は、gc使ってCSV読み込むなどを検討中
watasu {Get-Cluster}
watasu {Get-ClusterQuorum}
watasu {Get-ClusterGroup}
watasu {Get-ClusterResource}
watasu {Get-ClusterNode}
watasu {Get-ClusterNetwork}
watasu {Get-ClusterNetworkInterface}
# watasu {Get-Alias}
# watasu {Get-Command}
More than 5 years have passed since last update.
WSFC(Windows Server Failover Clustering)の情報採取
Last updated at Posted at 2015-12-31
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme