【VMware】PowerShellでPowerCLIを使ってVM情報を取得する



これは [エーピーコミュニケーションズAdvent Calendar 2020](https://qiita.com/advent-calendar/2020/ap-com) の16日目の記事です。

こんにちは、浅野です。

変更作業などのために、VMWare vCenterで管理しているVMの情報を取得したい場合、
該当VMを検索して、ハードウェア構成をスクショして、場合によってはエクセルに転機して、
変更作業後に再度繰り返して、、スクショして、、
という一連の作業ってよくあるかと思います。

面倒だなと思っているので、なんとかしたいなと思いPowerShellでPowerCLIを使って行った結果を記載します。

#####イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/369281/9efacbdb-a1af-372c-f8f5-51fcbc9e5e17.png)

ちなみに、ESXi バージョン:7.0.0です。

####本編

#####対象機器へログイン(事前作業)

```
PS C:\Users\ika> Connect-VIServer 192.168.1.NN　-force

Name                           Port  User
----                           ----  ----
192.168.1.NN                   443   root
```

#####Get-VM(無印)
以下な感じ（足りないなぁ）

```
PS C:\Users\ika> Get-VM

Name                 PowerState Num CPUs MemoryGB
----                 ---------- -------- --------
aaa                  PoweredOff 2        1.000
bbb                  PoweredOff 1        2.000
```

#####Get-VMに |(パイプして) select * つけるとこんな感じ

```
PS C:\Users\ika> Get-VM | select *
警告: The 'Version' property of VirtualMachine type is deprecated. Use the 'HardwareVersion' property instead.


Name                    : aaa
PowerState              : PoweredOff
Notes                   :
Guest                   : aaa:
NumCpu                  : 2
CoresPerSocket          : 1
MemoryMB                : 1024
MemoryGB                : 1
VMHostId                : HostSystem-ha-host
VMHost                  : 192.168.1.NN
VApp                    :
FolderId                : Folder-ha-folder-vm
Folder                  : vm
ResourcePoolId          : ResourcePool-ha-root-pool
ResourcePool            : Resources
HARestartPriority       :
HAIsolationResponse     :
DrsAutomationLevel      :
VMSwapfilePolicy        : Inherit
VMResourceConfiguration : CpuShares:Normal/2000 MemShares:Normal/10240
Version                 : Unknown
HardwareVersion         : vmx-17
PersistentId            : 5231e822-e0f6-8559-d6c3-ce8605ae6a77
GuestId                 : rhel7_64Guest
UsedSpaceGB             : 8.001024075783789157867431641
ProvisionedSpaceGB      : 9.304071668535470962524414063
DatastoreIdList         : {Datastore-5f71f5e2-9aba4140-9bd3-1c697a62d83a}
CreateDate              : 2020/10/17 9:03:16
ExtensionData           : VMware.Vim.VirtualMachine
CustomFields            : {}
Id                      : VirtualMachine-1
Uid                     : /VIServer=root@192.168.1.NN:443/VirtualMachine=VirtualMachine-1/

Name                    : bbb
PowerState              : PoweredOff
Notes                   :
Guest                   : bbb:
NumCpu                  : 1
CoresPerSocket          : 1
MemoryMB                : 2048
MemoryGB                : 2
VMHostId                : HostSystem-ha-host
VMHost                  : 192.168.1.NN
VApp                    :
FolderId                : Folder-ha-folder-vm
Folder                  : vm
ResourcePoolId          : ResourcePool-ha-root-pool
ResourcePool            : Resources
HARestartPriority       :
HAIsolationResponse     :
DrsAutomationLevel      :
VMSwapfilePolicy        : Inherit
VMResourceConfiguration : CpuShares:Normal/1000 MemShares:Normal/20480
Version                 : Unknown
HardwareVersion         : vmx-17
PersistentId            : 52ad865a-793a-a75f-3a1f-b38818272a6b
GuestId                 : centos7_64Guest
UsedSpaceGB             : 16.000280918553471565246582031
ProvisionedSpaceGB      : 18.301363942213356494903564453
DatastoreIdList         : {Datastore-5f71f5e2-9aba4140-9bd3-1c697a62d83a}
CreateDate              : 2020/10/17 13:21:23
ExtensionData           : VMware.Vim.VirtualMachine
CustomFields            : {}
Id                      : VirtualMachine-2
Uid                     : /VIServer=root@192.168.1.NN:443/VirtualMachine=VirtualMachine-2/



PS C:\Users\ika>

```

結構いい感じですが、まとめるとき面倒ですね。。特に複数VM
ということでもう一押し！

#####さらに|(パイプして) csv形式にして出力させる。

```
PS C:\Users\ika> Get-VM | select * | export-csv -path C:\tmp\file.csv
PS C:\Users\ika>
```

CSVファイルは以下（写真は一部です）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/369281/be1891b7-a0dd-57da-854b-a2eaca67a07e.png)

ということで、構成情報としてもまとめやすくなりました。
PowerShellで selectなど使用できるのが良かったかなと思います。

ご参考になれば幸いです。
ご覧いただきありがとうございました。

参考
https://www.n-novice.com/entry/2019/12/29/180000
https://tech.guitarrapc.com/entry/2013/03/15/190336