vCenterサーバの詳細設定をPowerCLIで標準出力およびファイルへ出力してみました。

大項目中項目
OSWindows 2008 R2
PowerCLIVMware-PowerCLI-5.1.0-1012425


■説明
vSphere PowerCLIでvCenterの詳細設定を取得してみました。
なんでこんなことをしたかと言うと、vCenterサーバのバージョンアップ時に役に立つと思ったから:)
後、PowerCLI(Shell)のお勉強にもなるしね!

詳細設定部分
vCenter_Advanced_Setting_01
 


 

(1)vSphere PowerCLIインストール

PowerCLIをインストールされていない場合は、以下アドレスを参照してください。
http://www.kurobuti.com/blog/?p=6836
 

(2)詳細設定取得スクリプト作成

・スクリプトソース

#vCenter詳細設定フォーマット例 : @{Key=ads.checkIntervalEnabled; Value=True}
#
# 説明 : 本スクリプトは、vCenterの詳細設定を抜き出して表示またはファイルに出力するスクリプトである。
#

# 配列作成
$ARRAY = @()

# ファイル変数作成
$FILE = $Args[0]

# vCenterサーバへ接続
Connect-VIServer -Server 'localhost' -User 'Administrator' -Password 'パスワード'

# vCenterサーバの詳細設定を取得
$si = Get-View ServiceInstance
$vpxSettings = Get-View $si.Content.Setting 

# vCenterサーバの詳細設定を見やすいように整形し、配列に格納
foreach ( $line in $vpxSettings.Setting | Select key,value ) {

	# $A には、設定のキーが格納
	$A = $line -replace "`r`n",'' | % {$($_-split("Key="))[1]} | % {$($_-split(";"))[0]}

	# $B には、設定の値が格納
	$B = $line -replace "`r`n",'' | % {$($_-split("Value="))[1]} | % {$($_-split("}"))[0]}

	# $A $B を配列に格納
	# ":" を "," に変更すればcsv形式で出力可能(Ex: $A,$B)
	$ARRAY += "$A : $B"
}

# vCenterサーバから切断
Disconnect-VIServer -Confirm:$false

# vCenterサーバの詳細設定を表示またはファイルへ出力
for ( $i = 0; $i -le $ARRAY.length; $i++ ) {

	# ファイルが引数で渡されている場合
	if( $FILE ) {
		# ファイルへ出力
		Write-Output $ARRAY[$i] | Out-File -FilePath $FILE -encoding Default -Append
	} else {
		# 標準出力へ出力
		Write-Output $ARRAY[$i]
	}
}

パスワードを変更してください。
上記スクリプトは、vCenterサーバのAdministratorのデスクトップに作成したと仮定します。
ファイル名は「test.ps1」とします。
 

(3)スクリプトの実行(標準出力)

標準出力する場合は、引数には何も指定しないで実行してください。

・実行例

PowerCLI C:\Users\administrator.KUROBUTI\Desktop> .\test.ps1

Name                           Port  User
----                           ----  ----
localhost                      443   Administrator
ads.checkInterval : 1440
ads.checkIntervalEnabled : True
ads.maxFetch : 5000
ads.maxFetchEnabled : True
(snip)
config.log.maxFileNum : 30
config.log.level : info
config.log.compressOnRoll : true
config.level[VmCheck].logName : VmCheck
config.level[VmCheck].logLevel : info
config.level[CpuFeatures].logName : CpuFeatures
config.level[CpuFeatures].logLevel : info
config.alert.log.enabled : true

3,4,5行目は詳細設定としては不要な情報です。
 

(4)スクリプト実行(ファイル出力)

ファイルへ出力する場合は、引数にファイル名を指定してください。
ちなみに、ファイルはスクリプトを実行したカレントディレクトリに作成されます。

・実行例

PowerCLI C:\Users\administrator.KUROBUTI\Desktop> .\test.ps1 vcenter_advanced_setting.txt

Name                           Port  User
----                           ----  ----
localhost                      443   Administrator

ファイルが出力されていることを確認します。

PowerCLI C:\Users\administrator.KUROBUTI\Desktop> dir

    ディレクトリ: C:\Users\administrator.KUROBUTI\Desktop

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2013/05/12     16:51       4304 vcenter_advanced_setting.txt

中身がきちんと出力されているか確認しましょう。
 

参考文献

1. vCenter詳細設定出力方法
2. PowerShell の配列操作
3. PowerCLIで改行コード削除
4. Windows PowerShell : UNIXの cut コマンド相当の作業をする。
5. PowerCLIでファイル出力
6. PowreShell – Write-Host と Write-Output の違い (1)
7. Windows PowerShell 入門(5)-制御構文
8. Windows PowerShell Loops
9. Output formatted PowerShell command to variable


5月 12, 2013 at 4:56 pm by 黒ぶちメガネ
Category: VMware