備忘録/にわかエンジニアが好きなように書く

個人的にとりあえず仕組みを知るためにとりあえず動くまで構築や動作をみただけの単なる操作ログです。個人用の備忘録となり、最新の導入手順は個別に確認してください。 ※変な内容や間違いを書いているなどありましたらコメントやご指摘いただけると幸いです。

VMware PowerCLIを使った設定値確認③(vSwitch , PortChannel , 物理NIC ,VMkernelNIC)

 

VMware PowerCLIを使って 物理NIC , 仮想スイッチ , PortGroup , VMkernelNICの設定とステータスを表示させる。

f:id:pocket01:20191214125936p:plain


物理NICの情報取得

下記の画面に表示される物理NICに関する情報を取得する。

f:id:pocket01:20191213004909p:plain

情報取得用スクリプト

#NIC状態格納用のオブジェクト設定
PS C:\tmp\a> $Datas = New-Object System.Collections.ArrayList

#NIC設定抽出用の定義
PS C:\tmp\a> $Network_nic_list = $esxcli.network.nic.list.Invoke()

#表示(タイトル行)の出力
PS C:\tmp\a> Write-Host "Name".PadRight(10) "Driver".PadRight(10) "LinkStatus".PadRight(12) "Speed".PadRight(10) "Duplex".PadRight(10) "AutoNego".PadRight(10) "MTU".PadRight(10) "MACAddress".PadRight(20) "Description".PadRight(100)
PS C:\tmp\a> Write-Host "======================================================================================================================================================================"

PS C:\tmp\a> for ($i=0; $i -lt $Network_nic_list.Length; $i++) {
PS C:\tmp\a> $Argments = $esxcli.network.nic.get.CreateArgs()
PS C:\tmp\a>  $Argments.nicname=$Network_nic_list[$i].Name
PS C:\tmp\a> $Network_nic_prop = $esxcli.network.nic.get.Invoke($Argments)
PS C:\tmp\a> $Nic_AutoNego = $Network_nic_prop.AutoNegotiation

#NIC状態の表示
PS C:\tmp\a> Write-Host $Network_nic_list[$i].Name.PadRight(10) $Network_nic_list[$i].Driver.PadRight(10) $Network_nic_list[$i].LinkStatus.PadRight(12) $Network_nic_list[$i].Speed.PadRight(10) $Network_nic_list[$i].Duplex.PadRight(10) $Nic_AutoNego.PadRight(10) $Network_nic_list[$i].MTU.PadRight(10) $Network_nic_list[$i].MACAddress.PadRight(20) $Network_nic_list[$i].Description.PadRight(100)
PS C:\tmp\a>  
PS C:\tmp\a> }
PS C:\tmp\a>  

スクリプト実行結果

f:id:pocket01:20191213124556p:plain

仮想スイッチの情報取得

下記の画面に表示される仮想スイッチに関する情報を取得する。

f:id:pocket01:20191213011447p:plain

f:id:pocket01:20191213011653p:plain

f:id:pocket01:20191213112611p:plain

情報取得用スクリプト

$Network_vswitch_Teaming = Get-VirtualSwitch | Get-NicTeamingPolicy | Sort VirtualSwitch
$Network_vswitch_SecPolicy = Get-VirtualSwitch | Get-SecurityPolicy | Sort VirtualSwitch
$Network_vswitch_Prop = $esxcli.network.vswitch.standard.list.Invoke()

for ($i=0; $i -lt $Network_vswitch_Teaming.Length; $i++) {
Write-Host "-----------------------------------------------------"
Write-Host "名前`t`t`t`t`t:" $Network_vswitch_Prop[$i].Name.PadRight(10)
Write-Host "MTU`t`t`t`t`t`t:" $Network_vswitch_Prop[$i].MTU.PadRight(10)
Write-Host "アップリンク`t`t`t:" $Network_vswitch_Prop[$i].Uplinks.PadRight(10)
Write-Host "CDP`t`t`t`t`t`t:" $Network_vswitch_Prop[$i].CDPStatus.PadRight(10)
Write-Host "セキュリティ"
Write-Host " - AllowPromiscuous`t`t:" $Network_vswitch_SecPolicy[$i].AllowPromiscuous
Write-Host " - ForgedTransmits`t`t:" $Network_vswitch_SecPolicy[$i].ForgedTransmits
Write-Host " - MacChanges`t`t`t:" $Network_vswitch_SecPolicy[$i].MacChanges
Write-Host "チーミング"
Write-Host " - LoadBalancingPolicy`t:" $Network_vswitch_Teaming[$i].LoadBalancingPolicy
Write-Host " - Failover`t`t`t`t:" $Network_vswitch_Teaming[$i].NetworkFailoverDetectionPolicy
Write-Host " - NotifySwitches`t`t:" $Network_vswitch_Teaming[$i].NotifySwitches
Write-Host " - FailbackEnabled`t`t:" $Network_vswitch_Teaming[$i].FailbackEnabled
Write-Host " - ActiveNic`t`t`t:" $Network_vswitch_Teaming[$i].ActiveNic
Write-Host " - StandbyNic`t`t`t:" $Network_vswitch_Teaming[$i].StandbyNic
Write-Host " - UnusedNic`t`t`t:" $Network_vswitch_Teaming[$i].UnusedNic

}

スクリプト実行結果

f:id:pocket01:20191213143113p:plain

f:id:pocket01:20191213143135p:plain

 

ポートグループの情報取得

下記の画面に表示されるポートグループに関する情報を取得する。

f:id:pocket01:20191213163158p:plain

f:id:pocket01:20191213160156p:plain

情報取得用スクリプト

$Network_PortGroup_Prop = $esxcli.network.vswitch.standard.portgroup.list.Invoke()
$Network_PortGroup_Teaming = Get-VirtualPortGroup | Get-NicTeamingPolicy | Sort VirtualPortGroup
$Network_PortGroup_SecPolicy = Get-VirtualPortGroup | Get-SecurityPolicy | Sort VirtualPortGroup

Write-Host ""
Write-Host "【ポートグループ】"
for ($i=0; $i -lt $Network_PortGroup_Teaming.Length; $i++) {
  Write-Host "-----------------------------------------------------"
Write-Host "Name`t`t`t`t`t:" $Network_PortGroup_Prop[$i].Name
Write-Host "VLANID`t`t`t`t`t:" $Network_PortGroup_Prop[$i].VLANID
Write-Host "VirtualSwitch`t`t`t:" $Network_PortGroup_Prop[$i].VirtualSwitch
Write-Host "ActiveClients`t`t`t:" $Network_PortGroup_Prop[$i].ActiveClients
Write-Host "セキュリティ"
Write-Host " - AllowPromiscuous`t`t:" $Network_PortGroup_SecPolicy[$i].AllowPromiscuous
Write-Host " - ForgedTransmits`t`t:" $Network_PortGroup_SecPolicy[$i].ForgedTransmits
Write-Host " - MacChanges`t`t`t:" $Network_PortGroup_SecPolicy[$i].MacChanges
Write-Host "チーミング"
Write-Host " - LoadBalancingPolicy`t:" $Network_PortGroup_Teaming[$i].LoadBalancingPolicy
  Write-Host " - Failover`t`t`t`t:" $Network_PortGroup_Teaming[$i].NetworkFailoverDetectionPolicy
  Write-Host " - NotifySwitches`t`t:" $Network_PortGroup_Teaming[$i].NotifySwitches
  Write-Host " - FailbackEnabled`t`t:" $Network_PortGroup_Teaming[$i].FailbackEnabled
  Write-Host " - ActiveNic`t`t`t:" $Network_PortGroup_Teaming[$i].ActiveNic
  Write-Host " - StandbyNic`t`t`t:" $Network_PortGroup_Teaming[$i].StandbyNic
  Write-Host " - UnusedNic`t`t`t:" $Network_PortGroup_Teaming[$i].UnusedNic

}

スクリプト実行結果

f:id:pocket01:20191213162010p:plain

f:id:pocket01:20191213162056p:plain

 

VMkernel NICの情報取得

下記の画面に表示されるVMkernel NICに関する情報を取得する。

f:id:pocket01:20191214130951p:plain

f:id:pocket01:20191214131039p:plain

情報取得用スクリプト

 
$VMHost_NetworkAdapter = Get-VMHostNetworkAdapter -VMKernel | Sort DeviceName
$Network_interface_list = $esxcli.network.ip.interface.list.Invoke() | Sort Name

Write-Host ""
Write-Host "【VMkernel NIC】"
for ($i=0; $i -lt $VMHost_NetworkAdapter.Length; $i++) {
Write-Host "--------------------------------------------------------------"
Write-Host "DeviceName`t`t`t`t`t:" $VMHost_NetworkAdapter[$i].DeviceName
Write-Host "PortGroupName`t`t`t`t:" $VMHost_NetworkAdapter[$i].PortGroupName
Write-Host ""
Write-Host "TCP/IP設定"
Write-Host "- NetstackInstance`t`t`t:" $Network_interface_list[$i].NetstackInstance
Write-Host "- DhcpEnabled`t`t`t`t:" $VMHost_NetworkAdapter[$i].DhcpEnabled
Write-Host "- IP`t`t`t`t`t`t:" $VMHost_NetworkAdapter[$i].IP
Write-Host "- SubnetMask`t`t`t`t:" $VMHost_NetworkAdapter[$i].SubnetMask
Write-Host "- IPv6ThroughDhcp`t`t`t:" $VMHost_NetworkAdapter[$i].IPv6ThroughDhcp
Write-Host "- AutomaticIPv6`t`t`t`t:" $VMHost_NetworkAdapter[$i].AutomaticIPv6
Write-Host "- IPv6`t`t`t`t`t`t:" $VMHost_NetworkAdapter[$i].IPv6
Write-Host ""
Write-Host "サービス"

#service情報取得のための定義
$args=$esxcli.network.ip.interface.tag.get.CreateArgs()
$args.interfacename=$VMHost_NetworkAdapter[$i].DeviceName
$Network_tag=$esxcli.network.ip.interface.tag.get.Invoke($args)
if ($Network_tag.Tags -eq "faultToleranceLogging"){
Write-Host "- Fault Toleranceのログ`t`t: ●有効"
} else {
Write-Host "- Fault Toleranceのログ`t`t: 〇無効"
}
if ($Network_tag.Tags -eq "Management"){
Write-Host "- 管理`t`t`t`t`t`t: ●有効"
} else {
Write-Host "- 管理`t`t`t`t`t`t: 〇無効"
}
if ($Network_tag.Tags -eq "vSphereProvisioning"){
Write-Host "- プロビジョニング`t`t`t: ●有効"
} else {
Write-Host "- プロビジョニング`t`t`t: 〇無効"
}
if ($Network_tag.Tags -eq "vSphereReplication"){
Write-Host "- レプリケーション`t`t`t: ●有効"
} else {
Write-Host "- レプリケーション`t`t`t: 〇無効"
}
if ($Network_tag.Tags -eq "vSphereReplicationNFC"){
Write-Host "- NFCレプリケーション`t`t: ●有効"
} else {
Write-Host "- NFCレプリケーション`t`t: 〇無効"
}
if ($Network_tag.Tags -eq "VMotion"){
Write-Host "- VMotion`t`t`t`t`t: ●有効"
} else {
Write-Host "- VMotion`t`t`t`t`t: 〇無効"
}
if ($Network_tag.Tags -eq "VSAN"){
Write-Host "- vSAN`t`t`t`t`t`t: ●有効"
} else {
Write-Host "- vSAN`t`t`t`t`t`t: 〇無効"
}
if ($Network_tag.Tags -eq "VSANWitness"){
Write-Host "- vSan監視`t`t`t`t`t: ●有効"
} else {
Write-Host "- vSan監視`t`t`t`t`t: 〇無効"
}
}

スクリプト実行結果

f:id:pocket01:20191215013931p:plain

f:id:pocket01:20191214202323p:plain

 

今後の修正

・設定値を変更しながら値を確認していき、設定画面上と同じ日本語出力となるように対応する

 - if , switch などで値によって条件分岐を追加

・vSwitchやPortGroupが縦出力なので、横側へ出力させてみたい

 

 

VMware徹底入門  第4版 VMware vSphere 6.0対応

VMware徹底入門 第4版 VMware vSphere 6.0対応