powercli

Details of host Advanced settings

まとめ

  • ESXi ホストの詳細設定一覧を CSV で出力
  • ホストの詳細設定の値は 6 種類 {String,Bool,Choice,Long,Int,Float}Option
  • PowerCLI で Locale を設定する場合は SessionManager#SetLocale を利用する
  • 詳細設定はむやみやたらに代えるものではないので、マニュアル、KB、サポートの指示に従い変更すること
  • 詳細設定のさらに詳細な説明は求めないこと ! 詳細設定名から機能の深淵を想像して ゲヘゲヘ しましょう。

はじめに

昨日のエントリでホストの詳細設定の闇に近づいたので、もう少々深掘りするために詳細設定の一覧を作成してみます

PowerCLI でホストの詳細設定一覧を取得

ホストの詳細設定を管理している OptionManager を取得し、プロパティ SupportedOption の内容をリスト化します。

各詳細設定の型が異なるので、Default、Remarks といったバックリとした項目にそれぞれの型のプロパティをマッピングします。Summary については、接続したときの Locale で説明の言語が決まってしまうため SessionManager#SetLocale で変更します。使える言語は vCenter Server が対応している言語に従います。

StringOption

文字列の値となりますが、ValidCharacters という正規表現もどきの規則が値として格納されている場合があります。StringOption では ValidCharacters を Remarks の列に保存します。

BoolOption

真偽値の値となります。まんまです。Supported という真偽値のプロパティがあり、これを Remarks に保存しています。が、詳細設定の変更の影響を案内されていないのであれば変更しないのが吉です。

ChoiceOption

列挙型の値を取ります。この OptionType だけ DefaultValue ではなく DefaultIndex というプロパティ名なので、DefaultIndex を Default 列に格納します。また、各詳細設定毎に列挙型が異なるので Remarks にその値を列挙します。なお ChoiceOption は、主にログレベルの設定に使われています。

{Long,Int,Float}Option

数値の値を取ります。最小値と最大値が定義されているので、これらをまとめて Remarks に保存します。

PowerCLI スクリプトコード

コツは以下の通り

  • Add-PSSnapin は “-ErrorAction SilentlyContinue” を付けると、すでに Add-PSSnapin されている PowerCLI のコンソールでもエラーが出なくてよい
  • PowerCLI の Locale 変更は SessionManager#SetLocale で行う
  • PowerCLI オブジェクトのプロパティ ExtensionData から vSphere Web Services SDK のオブジェクトを触れる
  • 任意のプロパティを追加したい場合は、空文字に作成したいプロパティ名で Select-Object すると便利
  • instanceof 的な演算子は “-is” や “-isnot”

月 1 程度しか PowerCLI に書かないので、禄にイディオムを覚えない…Orz 年のせいかもしれない。

$VcHostname="vcenter_hostname"
$VmHostname="esxi_hostname"
$Username="administrator@vsphere.local"
$Password="VMware1!"
$Locale="ja_JP"
$CsvFile="C:\Temp\VmHostAdvSettings.csv"

Add-PSSnapin -ErrorAction SilentlyContinue VMware.VimAutomation.Core

$VcServer = Connect-VIServer -Server $VcHostname -Username $Username -Password $Password
$SessionManager = Get-View $VcServer.ExtensionData.Content.SessionManager
$SessionManager.SetLocale($Locale)

$VmHost = Get-VmHost -Name $VmHostname
$OptionManager = Get-View $VmHost.ExtensionData.ConfigManager.AdvancedOption
$SupportedOptions = $OptionManager.SupportedOption

$Rows = @()

$SupportedOptions | Foreach-Object {
    $SupportedOption = $_

    $Row = "" | Select-Object "Key", "Type", "Default", "IsReadOnly", "Remarks", "Summary"
    $Row.Key = $SupportedOption.Key
    $Row.Type = $SupportedOption.OptionType.GetType().FullName
    $Row.IsReadOnly = $SupportedOption.OptionType.ValueIsReadonly
    $Row.Summary = $SupportedOption.Summary

    $OptionType = $SupportedOption.OptionType

    If ($OptionType -is [VMware.Vim.StringOption]) {
        $Row.Default = $OptionType.DefaultValue
        $Row.Remarks = $OptionType.ValidCharacters

    } Elseif (($OptionType -is [VMware.Vim.LongOption]) `
            -or ($OptionType -is [VMware.Vim.IntOption]) `
            -or ($OptionType -is [VMware.Vim.FloatOption])) {
        $Row.Default = $OptionType.DefaultValue
        $Row.Remarks = "Min: "+$OptionType.Min+", Max: "+$OptionType.Max

    } Elseif ($OptionType -is [VMware.Vim.BoolOption]) {
        $Row.Default = $OptionType.DefaultValue
        $Row.Remarks = $OptionType.Supported

    } Elseif ($OptionType -is [VMware.Vim.ChoiceOption]) {
        $Row.Default = $OptionType.DefaultIndex
        $Count = 0
        $OptionType.ChoiceInfo | Foreach-Object {
            $ChoiceInfo = $_
            If ($Count -eq 0) {
                $Row.Remarks = "`""+$ChoiceInfo.Key+"`""
            } Else {
                $Row.Remarks += ", `""+$ChoiceInfo.Key+"`""
            }
            $Count += 1
        }

    }

    $Rows += $Row
}

$Rows | Export-Csv -Encoding Default -Path $CsvFile

その他

-or などの論理演算子は改行してはいけない。` で改行をエスケープすること。

チート

できあがりの CSV の内容。Summary は日本語です。

VmHostAdvSettings.7z

一覧としてみることが出来ますが、あくまで参考程度に。こういった詳細設定の詳細説明を求められることもありますが、たまたまソースコード上で可変にできる値が UI 上にあるだけなので、基本的には気にしないのが吉です。基本的にマニュアル、KB、サポートにある詳細設定以外はアンタッチャブルで !!! 家ラボで変更して転んでも泣かない !

他の会社の製品になりますが、とあるミドルウェアの詳細設定を * 千万円もかけてそのベンダーのコンサルに書き上げさせたという逸話を聞いたことがあります。正直誰得?な成果物だと思います…検収するのも大変だし、バージョン アップで追加・変更・削除があるでしょうしね。

関連記事

  1. VMConAWS

    ワークロードの容易な移動

    はじめにVMware Cloud on AWS では…

  2. Tong-Sai@Naka Island, Thailand

    vmware

    vExpert 2016 Award

    vExpert 2016 Award Announcement今年…

  3. powercli

    PowerShell スクリプト コマンドレットのパラメータに補完機能を

    まとめスクリプト コマンドレット パラメーターの補完は極めて便利…

  4. powercli

    PowerCLI – オブジェクトの変換

    vSphere Web Services SDK (SDK) と vS…

  5. fusion

    IME 切替 on MacBook Pro + VMware Fusion + Windows Gu…

    まとめVMware Fusion のゲスト OS としてインスト…

  6. netapp

    Increasing capacity of NetApp Clustered Data ONTAP…

    まとめNetApp のパートナー、あるいや、Data ONTAP…

コメント

  1. この記事へのコメントはありません。

  1. 2018年 9月 14日










  1. host profiles

    Host Profiles 抽出時のエラー回避方法 / How to avoid…
  2. powercli

    Onyx for the Web Client
  3. devbox

    Insight into VMware Photon Controller &#…
  4. fusion

    VMware Fusion に vCenter Server Appliance…
  5. quadstor

    iptables configuration for QUADStor
PAGE TOP
Translate »