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> #