VMware vSphere PowerCLIを使用したスクリプトをバッチから起動するためのメモ


VMware vSphere PowerCLIを使用したスクリプトをバッチから起動するためのメモです

VMware vSphere PowerCLIは便利ですが、VMware vSphere PowerCLIコンソールを立ち上げてからのコマンド実行なので、少しめんどくさいです。なので少し調べてみました。

なお、VMware vSphere PowerCLIは、以下からダウンロードできます。

ダウンロード vSphere PowerCLI 5.5

VMware vSphere PowerCLIに限らずですが、
Powershell スクリプトファイル(.PS1)を実行するためにはポリシー変更が必要です。

VMware vSphere PowerCLIを初回起動時には以下のように表示されます。

. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Program
 Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLI
Environment.ps1 を読み込むことができません。詳細については、「about_Execution_P
olicies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:3
+ . "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Init
ial ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
 + CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
 + FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>

 

この場合、管理者として実行したPowershellにて、以下のコマンドを実行する必要があります。

Set-ExecutionPolicy RemoteSigned

(上記の場合、ローカルのローカルに保存されているスクリプトは実行可能。インターネットからダウンロードしたスクリプト(非ローカルのスクリプト)は、署名されているもののみが実行可能。)

そのほかのパラメータとしては、以下のようなものがあります。

Unrestricted
全てのスクリプトが実行可能。ただしインターネットからダウンロードしたスクリプトは、実行するかどうかが確認されるので、ユーザーが明示的に許可した場合のみ実行される

Bypass
全てのスクリプトが実警告やユーザーへの確認なしに、全てのスクリプトが実行可能

 

 

これで、VMware vSphere PowerCLIを起動した状態でPowerSHellからスクリプトファイルが実行できるようになります。

ためしに以下のps1ファイルを作成します

Get-PowerCLIVersion.ps1

#vSpherePowerCLIのバージョン表示
Get-PowerCLIVersion

 

これをVMware vSphere PowerCLIで実行します。

Welcome to the VMware vSphere PowerCLI!

Log in to a vCenter Server or ESX host: Connect-VIServer
To find out what commands are available, type: Get-VICommand
To show searchable help for all PowerCLI commands: Get-PowerCLIHelp
Once you've connected, display all virtual machines: Get-VM
If you need more help, visit the PowerCLI community: Get-PowerCLICommunity

Copyright (C) 1998-2012 VMware, Inc. All rights reserved.PowerCLI 
C:\Program Files\VMware\Infrastructure\vSphere PowerCLI> cd C:\tool\Pow
erShellCUSTOM

PowerCLI C:\tool\PowerShellCUSTOM> .\PowerCLIVersion.ps1

PowerCLI Version
----------------
 VMware vSphere PowerCLI 5.1 Release 1 build 793510
---------------
Snapin Versions
---------------
 VMWare AutoDeploy PowerCLI Component 5.1 build 768137
 VMWare ImageBuilder PowerCLI Component 5.1 build 768137
 VMware vCloud Director PowerCLI Component 1.5 build 793505
 VMware License PowerCLI Component 5.1 build 669840
 VMware vSphere PowerCLI Component 5.1 build 793489

 PowerCLI C:\tool\PowerShellCUSTOM>

 

しかし、コマンドプロンプトやバッチファイルから以下のように実行しても、エラーになります。

C:\>cd C:\tool\PowerShellCUSTOM
C:\tool\PowerShellCUSTOM>powershell .\PowerCLIVersion.ps1
用語 'Get-PowerCLIVersion' は、コマンドレット、関数、スクリプト ファイル、また
 は操作可能なプログラムの名前として認識されません。名前が正しく記述されているこ
 とを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行
 してください。
 発生場所 C:\tool\PowerShellCUSTOM\PowerCLIVersion.ps1:1 文字:20
 + Get-PowerCLIVersion <<<<
 + CategoryInfo : ObjectNotFound: (Get-PowerCLIVersion:String) []、
 CommandNotFoundException
 + FullyQualifiedErrorId : CommandNotFoundException

 

この場合は、実行するps1ファイルに以下の行を追加します

#PowerCLIスナップイン組み込み
Add-PSSnapin VMware.VimAutomation.Core

 

実際にやってみます。

Get-PowerCLIVersion.ps1 を変更

#PowerCLIスナップイン組み込み
Add-PSSnapin VMware.VimAutomation.Core

#vSpherePowerCLIのバージョン表示
Get-PowerCLIVersion

 

コマンドプロンプトから実行してみます

C:\tool\PowerShellCUSTOM>powershell .\PowerCLIVersion.ps1

PowerCLI Version
----------------
 VMware vSphere PowerCLI 5.1 Release 1 build 793510
---------------
Snapin Versions
---------------
 VMWare AutoDeploy PowerCLI Component 5.1 build 768137
 VMWare ImageBuilder PowerCLI Component 5.1 build 768137
 VMware vCloud Director PowerCLI Component 1.5 build 793505
 VMware License PowerCLI Component 5.1 build 669840
 VMware vSphere PowerCLI Component 5.1 build 793489

C:\tool\PowerShellCUSTOM>

実行できました。

あとは以下のようなバッチファイルを書けば、すぐに実行できますね。

@echo off
cd C:\tool\PowerShellCUSTOM
powershell .\PowerCLIVersion.ps1

Views: 16

カテゴリー: ESXi, Windows パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です