vsphere 4.1: vmware vsphere PowerCLI 使い方


VMware vSphere PowerCLI とは

使い易いWindows PowerShellインターフェイスで、VMware vSphereを管理できます


VMware vSphere PowerCLI 4.1 Update 1
Build 332441 is version 4.1 Update 1 of VMware vSphere PowerCLI.


vSphere PowerCLIを使用するには、次のソフトウェアのインストールが必要です
  • .NET 2.0 Service Pack 1
  • Windows PowerShell 1.0 or Windows PowerShell 2.0 


vSphere PowerCLI 4.1 Update 1 は次のOS上で動作します。 32-bit と 64-bit 共にOK
  • Windows 7
  • Windows 2008 Server
  • Windows Vista
  • Windows XP Service Pack 2
  • Windows Server 2003 Service Pack 2


  • VMware ESX 4.1 / vCenter Server 4.1
  • VMware ESX 4.1 i
  • VMware ESX 4.0 Update 2 / vCenter Server 4.0 Update 2
  • VMware ESX 4.0 Update 2 i
  • VMware VirtualCenter 2.5 Update 6
  • VMware ESX 3.5 Update 5
  • VMware ESX 3.5 Update 5 i

VMware vSphere PowerCLI インストール方法


使い易いWindows PowerShellインターフェイスで、
VMware vSphereを管理できます

インストール先OS: Windows Server 2008 R2
インストールバージョン: VMware-PowerCLI-4.1.1-332441.exe

This installation of VMware vSphere PowerCLI requires an additional component, 'VMware VIX', which will be installed automatically. Click OK to continue.

The PowerShell execution policy of this computer is not set to "RemoteSigned". This prevents execution of PowerShell scripts on your computer. This will result in non-problematic errors when VMware vSphere PowerCLI is invoked. It is recommended that you set the execution policy to "RemoteSigned" in order to be able to execute scripts and to hide the errors in VMware vSphere PowerCLI Console. This can be done by invoking the command 'Set-ExecutionPolicy RemoteSigned' from a PowerShell prompt.

Press Continue to skip and continue install or Cancel to exit the installation.

VMware vSphere PowerCLI 初めの一歩

スクリプトの実行がシステムで無効になっているため、ファイル C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1 を読み込めません。詳細については、「get-helpabout_signing」と入力してヘルプを参照してください。
発生場所 行:1 文字:2
+ . <<<<  "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Script
    + CategoryInfo          : NotSpecified: (:) []、PSSecurityException
    + FullyQualifiedErrorId : RuntimeException


PS > Set-ExecutionPolicy RemoteSigned

を変更すると、about_Execution_Policies のヘルプ
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y
PS >

          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-2010 VMware, Inc. All rights reserved.

[vSphere PowerCLI] C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI>

VMware vSphere PowerCLI でvCenterに接続

VMware vSphere PowerCLIを使用して、VMware vCenterに接続する
<vCenter IPアドレス>と<ユーザー名>は環境に合わせてください

[vSphere PowerCLI] > Connect-VIServer -Server <vCenter IPアドレス> -User <ユーザー名> -Password <パスワード>
警告: There were one or more problems with the server certificate:

* The X509 chain could not be built up to the root certificate.

* The certificate's CN name does not match the passed value.

Name                           Port  User
----                           ----  ----
<vCenter IPアドレス>           443   <ユーザー名>


[vSphere PowerCLI] > Get-VM -Name "*"

Name                 PowerState Num CPUs Memory (MB)
----                 ---------- -------- -----------
vc01                 PoweredOn  2        3072
win2003test2         PoweredOff 1        4096
win2003test          PoweredOff 1        4000

VMware vSphere PowerCLI でゲストOSのディスク容量確認


$VCenter = "<vCenter IPアドレス>"
$User = "<ユーザー名>"
$Pass = "<パスワード>" 

$Mini = 3000
$file = ".\mailbody.txt"

$Smtp = "<SMTP IPアドレス>"
$toAddr = "<送信先メールアドレス>, <送信先メールアドレス2>"
$fromAddr = "<送信元メールアドレス>"

# vCenterへ接続
$Server = Connect-VIServer -Server $VCenter -User $User -Password $Pass

Get-VM | Get-VMGuest | ForEach-Object {
  $VMGuest = $_
  $VMGuest.Disks | ForEach-Object {
    $Report = "" | select-Object Hostname,Volume,"Free MB"
    $Report.Hostname = $VMGuest.VmName
    $Report.Volume = $_.Path
    $Report."Free MB" = $_.FreeSpace/1MB
    $Report."Free MB" = [int] $Report."Free MB"
if ($Report."Free MB" -le $Mini)
     $Report | Out-File $file

# vCenterから切断。切断プロンプトを出さない
Disconnect-VIServer -Server $Server -Confirm:$false

# メール送信
$Subject= "VMdisk: GuestOS Drive list under " + $Mini + "MB  " + (Get-Date).toString() 

# Joinメソッドは、Get-Contentで読み込んだ1行単位のテキスト
# (文字列配列)を改行(`r`n)で連結

$Body = [String]::Join("`r`n", (Get-Content $file))

$mailer = new-object System.Net.Mail.SmtpClient($Smtp)

コマンドプロンプトからVMware vSphere PowerCLI実行(タスクスケジュール登録)

powershell.exe -psc "C:\Program Files\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" <PS1スクリプトパス>


サブページ リスト