2018/07/06追記
PowerCLI Coreが無くなり、VMware PowerCLI本体の方でPowerShell Coreへの対応が行われるようになった結果、ここに書いたようなモジュール名の使い分けが不要になりました。
詳細は「CentOS7環境にPowerShell CoreとVMware PowerCLIをインストール」に記載しました。
Windows環境以外でも、動作するようになったPowerShellと、VMware PowerCLI
(Power Shell Core 6.0をCentOS7で使ってみる)
(Linux上のPowerShellでvSphereの操作を行うPowerCLI Coreを試す+CentOS7で使うための回避策)
いままで作ったPowerCLI用のスクリプトを使おうとして問題発覚。
PowerCLIモジュールを「Import-Module -Name VMware.VimAutomation.Core」で読み込ませていたのだが、PowerCLI Coreではモジュール名が「PowerCLI.ViCore」に変更されていた。
また、PoweCLI Coreの手順だと、モジュール名を特定しなくとも、条件にあてはまるものを全て読み込む、ということができるやり方が提示されていた。
そこで、PowerCLIとPowerCLI Coreのどちらでも、関連モジュールを全て読み込むような記述を考えて作成した。
Write-Host "初期のモジュール読み込み状況"
Get-Module
Write-Host ""
# Windows用PowerCLIがインストールされているか?
$modulelist=Get-Module -ListAvailable VMware.Vim*
if($modulelist -eq $null){
# modulelist Coreがインストールされているか?
$modulelist=Get-Module -ListAvailable PowerCLI*
}
if($modulelist -eq $null){
Write-Host "PowerCLIがインストールされていません"
exit 1
}
$modulelist | Import-Module
Write-Host ""
Write-Host "現在のモジュール読み込み状況"
Get-Module
Windows環境での実行結果
PS C:\tmp> .\importmodule.ps1
初期のモジュール読み込み状況
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 3.1.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Con...
Manifest 3.1.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type, Clear-Variable, Compare-Object...}
現在のモジュール読み込み状況
Script 0.0 Initialize-VMware.VimAutomation....
Script 0.0 Initialize-VMware.VimAutomation....
Script 0.0 Initialize-VMware_VimAutomation_Cis
Manifest 3.1.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Con...
Manifest 3.1.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type, Clear-Variable, Compare-Object...}
Binary 6.5.0.4... VMware.VimAutomation.Cis.Core {Connect-CisServer, Disconnect-CisServer, Get-CisService}
Manifest 6.5.0.4... VMware.VimAutomation.Common
Binary 6.5.0.2... VMware.VimAutomation.Core {Add-PassthroughDevice, Add-VirtualSwitchPhysicalNetworkAd...
Binary 6.0.0.0 VMware.VimAutomation.HA Get-DrmInfo
Binary 6.5.0.4... VMware.VimAutomation.License Get-LicenseDataManager
Manifest 6.5.0.4... VMware.VimAutomation.Sdk Get-PSVersion
Binary 6.5.0.4... VMware.VimAutomation.Storage {Copy-VDisk, Export-SpbmStoragePolicy, Get-NfsUser, Get-Sp...
Binary 6.5.0.4... VMware.VimAutomation.Vds {Add-VDSwitchPhysicalNetworkAdapter, Add-VDSwitchVMHost, E...
Binary 6.5.0.4... VMware.VimAutomation.vROps {Connect-OMServer, Disconnect-OMServer, Get-OMAlert, Get-O...
C:\tmp>
CentOS7環境での実行例
# cat importmodule.ps1 |powershell
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
PS /root> Write-Host "初期のモジュール読み込み状況"
初期のモジュール読み込み状況
PS /root> Get-Module
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 3.1.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-T...
Script 1.2 PSReadLine {Get-PSReadlineKey...
PS /root> Write-Host ""
PS /root>
PS /root> # Windows用PowerCLIがインストールされているか?
PS /root> $modulelist=Get-Module -ListAvailable VMware.Vim*
PS /root> if($modulelist -eq $null){
>> # modulelist Coreがインストールされているか?
>> $modulelist=Get-Module -ListAvailable PowerCLI*
>> }
>> if($modulelist -eq $null){
>> Write-Host "PowerCLIがインストールされていません"
>> exit 1
>> }
>> $modulelist | Import-Module
>> Write-Host ""
>> Write-Host "現在のモジュール読み込み状況"
>> Get-Module
>>
現在のモジュール読み込み状況
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 0.0 Initialize
Script 0.0 Initialize-VMware_VimAutomation_Vds
Manifest 3.1.0.0 Microsoft.PowerShell.Management {Add-Content, Clea...
Manifest 3.1.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-T...
Binary 1.21 PowerCLI.Vds {Add-VDSwitchPhysi...
Binary 1.21 PowerCLI.ViCore {Add-PassthroughDe...
Script 1.2 PSReadLine {Get-PSReadlineKey...
PS /root> #