VMware vSphere PowerCLIのGet-HardDiskコマンドレットで全仮想マシンの全仮想ディスクの一覧を抽出する

VMware vSphere仮想環境を管理するvCenter ServerのGUIから、仮想マシンの一覧やデータストアの一覧をCSV形式でエクスポートできます。
とても便利な機能で私もよく利用します。

しかし以前から、仮想ディスクの一覧を取得できたらいいなと思っていました。
調べたら仮想ディスクの一覧を取得するコマンドがあるんですね。
PowerCLIのGet-HardDiskコマンドレットが使えます。

これで、指定した仮想マシンに紐づいている仮想ディスクの一覧が表示されます。
Get-HardDisk -VM <仮想マシン名>

全部の仮想マシンの全仮想ディスクの一覧は、こんな感じで抽出できます。
コマンドは改行無しの1行で入力します。
VMware PowerCLI 6.5 Release 1 build 4624819
PowerCLI C:\> Get-VM |Get-HardDisk |Select-Object {$_.Parent,$_.Name,$_.CapacityGB,$_.StorageFormat}

$_.Parent,$_.Name,$_.CapacityGB,$_.StorageFormat
------------------------------------------------
{VM-SERVER01, ハード ディスク 1, 100, EagerZeroedThick}
{VM-SERVER01, ハード ディスク 2, 800, EagerZeroedThick}
{TEST-SV01, ハード ディスク 1, 80, Thin}
{TEST-SV01, ハード ディスク 2, 200, Thin}
{TEST-SV01, ハード ディスク 3, 400, Thin}

PowerCLI C:\>

当然ですが、事前にConnect-VIServerコマンドレットでvCenter Serverに接続します。

Get-VMで仮想マシン名の一覧を抽出し、パイプでGet-HardDiskに送ります。
その結果をさらにSelect-Objectにパイプで送り、必要な項目を表示します。
今回は以下の4つの項目を抽出しています。
項目名説明
Parent仮想ディスクの親となる仮想マシン名です。
Name仮想ディスク名です。vCenter Serverの仮想マシンの編集画面で見える、ハードディスク1とか、ハードディスク2とかのあれです。
CapacityGB仮想ディスクのサイズ(GB)です。CapacityKBの指定もできます。シンタイプの仮想ディスクの場合は、プロビジョニングされた値を示します。
StorageFormatシンかシックかわかります。私の試した環境ではThinとEagerZeroedThickのどちらかでしたが、ZeroedThickもあるんでしょうね。
EagerZeroedThickは仮想ディスクを作成した時点ですべてのブロックがゼロ埋めされます。
ZeroedThickは仮想ディスクを作成した時点で一部のブロックがゼロ埋めされます。


全仮想マシンの全仮想ディスク一覧をCSV形式に抽出するコマンドの例です。
Get-VM |Get-HardDisk |Export-Csv -Encoding Default -Path C:\Temp\Get-HardDisk.csv

CSV形式にエクスポートするともっと多くの項目が出力されます。
例えばFilenameには、仮想ディスクを配置するデータストア、ディレクトリ、ファイル名が出力されます。
こんな感じです。
[VM-SERVER01] VM-SERVER01/VM-SERVER01.vmdk
[VM-SERVER01] VM-SERVER01/VM-SERVER01_1.vmdk
[VM-SERVER01] VM-SERVER01/VM-SERVER01_2.vmdk


Get-HardDiskコマンドレットも便利ですね。

テーマ : VMware
ジャンル : コンピュータ

VMware vSphere PowerCLIのGet-VMHostHbaコマンドレットでFC-HBAのダウンしているポートを検出する

VMware vSphereで、通常はESXiホストのFC-HBAのポートは二重化しています。
しかし、あるとき、あるシステムの、あるESXiホストで、片方のFCポートがダウンしている事に「たまたま」気づきました。
当然ハード障害の監視はやってるんですけどね。気づきませんでした。
vCenter Serverから冗長性の低下のメールが送られていたのかもしれませんが、いずれにしてもメールは見落としたら、もうわからなくなってしまいます。

多数のESXiホストのFCパスが2本とも有効かどうかをvCenter ServerのGUIで確認したらかなりの手間です。
PowerCLIに何か適当なコマンドレットがないか調べたら、Get-VMHostHbaコマンドレットが良さそうなので試してみました。

Get-VMHostHbaコマンドレットでStatusを見れば、簡単にポートのダウンがわかります。
Statusがonlineなら有効(正常)、offlineなら非活動(異常)と判断できます。

(図1)Get-VMHostHbaコマンドレットを実行した画面のイメージ
Get-VMHostHbaコマンドレット
この結果を文字列でサーチして、"offline"の文字列があったらアラートを出すなどします。


上図をテキスト(文字)で打ち込んだらこんな感じ。
VMware PowerCLI 6.5 Release 1 build 4624819
PowerCLI C:\> Connect-VIServer -Server 192.168.1.1 -Port 20443 -User administrator -Password password

Name                         Port  User
----                         ----  ----
192.168.1.1                  20443 Administrator


PowerCLI
C:\> Get-VMHostHba -Type Fibrechannel |Select-Object VMHost,Device,Type,status,model |Sort-Object VMHost,Device |Format-Table -A

VMHost      Device Type         Status  Model
------      ------ ----         ------  -----
esx01.local vmhba0 FibreChannel online  LPe11000 4Gb Fibre Channel Host Adapter
esx01.local vmhba1 FibreChannel online  LPe11000 4Gb Fibre Channel Host Adapter
esx02.local vmhba0 FibreChannel online  LPe11000 4Gb Fibre Channel Host Adapter
esx02.local vmhba1 FibreChannel online  LPe11000 4Gb Fibre Channel Host Adapter
esx03.local vmhba2 FibreChannel offline LPe12000 8Gb Fibre Channel Host Adapter
esx03.local vmhba3 FibreChannel online  LPe12000 8Gb Fibre Channel Host Adapter
esx04.local vmhba2 FibreChannel online  LPe12000 8Gb Fibre Channel Host Adapter
esx04.local vmhba3 FibreChannel online  LPe12000 8Gb Fibre Channel Host Adapter

PowerCLI C:\>

Connect-VIServerコマンドレットでvCenter Serverに接続します。
Get-VMHostHbaコマンドレットでFC-HBAのポート状態を検出します。

単に「Get-VMHostHba」だけを実行すると、全ESXiホストのHBAが表示されます。
しかしそのホスト名が表示されないんですよね。
なのでSelect-ObjectでVMHostを含むいくつかの項目を表示させています。
そしてSort-Objectでホスト名順のHBAの名前順にソートしています。

これはGet-VMHostHbaの結果をパイプでOut-Fileに送ってテキストファイルに書き込むことを想定しています。
こんな感じです。
Get-VMHostHba -Type Fibrechannel |Select-Object VMHost,Device,Type,status,model |Sort-Object VMHost,Device |Format-Table -A |Out-File -FilePath D:\log\FC-HBAのポート状態.log -Append

まあこんな事をしなくても、パイプでexport-csvに送れば全項目が出力されるのですが、自分の勉強のためにSelect-Objectとか、Out-Fileとかを使ってみました。

当然ですが、すべてのFC-HBAの全FCポートにFCケーブルが差し込まれていて、通常時はリンクアップしている事が前提です。
ESXiホストにFCボードを搭載しているけど、FCケーブルを差し込んでいないポートがあれば、それは常に「offline」になるので、この方法では毎回「異常」となってしまいます。

テーマ : VMware
ジャンル : コンピュータ

Windows PowerShellのGet-ItemとRemove-Itemコマンドレットでタイムスタンプが2日以上前のファイルとフォルダを削除する

前回はGet-ChildItemコマンドレットを使って、更新日時が2日以上古いデータを表示しました。
今回はその応用で、その表示されたデータを削除します。
古いログファイルなどを削除する事を想定しています。

コマンドプロンプトからPowerShellスクリプトを呼び出します。
引数の「2」は、直近の2日分を残す(今日と昨日の分を残す)事を意味します。

C:\>powershell.exe C:\Batch\フォルダとファイルの削除.ps1 2


コマンドプロンプトから呼び出されるPowerShellスクリプトです。
前回の削除対象を表示するスクリプトの最後に、パイプと「Remove-Item -Recurse」を追加しただけです。

Param($保存日数)
Get-ChildItem -path C:\Temp | Where-object{((Get-Date) - $_.LastWriteTime).Days -ge $保存日数 } | Remove-Item -Recurse

繰り返しになりますが、このコマンドではC:\Tempフォルダ直下のフォルダの更新日時を見て削除対象かどうかを判断します。
インターネットで同様のコマンドを検索すると、フォルダ内の全ファイルのタイムスタンプを再帰的に取得して、個々のファイルのタイムスタンプで削除対象かどうかを判断している事例ばかりでした。
今回は、あるフォルダの中に入っている複数のファイルは、それを格納するフォルダのタイムスタンプだけを見て削除対象がどうかを判断できる状況を想定しています。
これだとファイルだけが削除されて、空のフォルダが残るような事もなく、簡単です。

では削除スクリプトを実行してみます。

(画像1)C:\Tempのフォルダとファイルの一覧
C:\Windows\system32\cmd.exe

C:\>powershell.exe Get-ChildItem -path C:\Temp


    ディレクトリ: C:\Temp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2016/12/10      4:00            001
d----        2016/12/11      4:00            002
d----        2016/12/12      4:00            003
d----        2016/12/13      4:00            004
-a---        2016/12/10      4:00          0 001.txt
-a---        2016/12/11      4:00          0 002.txt
-a---        2016/12/12      4:00          0 003.txt
-a---        2016/12/13      4:00          0 004.txt



C:\> _
ファイルとフォルダの更新日時は2016/12/10、12/11、12/12、12/13のそれぞれ04:00です。

(画像2)現在の日時
C:\Windows\system32\cmd.exe

C:\>powershell.exe Get-Date

2016年12月13日 8:53:56



C:\> _

(画像3)削除スクリプトを実行
C:\Windows\system32\cmd.exe

C:\>powershell.exe C:\Batch\フォルダとファイルの削除.ps1 2

C:\> _
引数の「2」は、直近2日分を残してそれ以上古いデータを削除する意味です。

(画像4)削除スクリプトを実行後のC:\Tempフォルダ
C:\Windows\system32\cmd.exe

C:\>powershell.exe Get-ChildItem -path C:\Temp


    ディレクトリ: C:\Temp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2016/12/12      4:00            003
d----        2016/12/13      4:00            004
-a---        2016/12/12      4:00          0 003.txt
-a---        2016/12/13      4:00          0 004.txt



C:\> _

(画像5)削除スクリプトを実行後のC:\Tempフォルダ
削除スクリプトの実行後

直近の2日分(今日と昨日の分)を残し、それよりも古いデータが削除されました。
属性の「LastWriteTime」はファイルやフォルダの更新日時です。
これを「CreationTime」にすれば、作成日時になります。

(画像6)C:\Temp\001フォルダ内の存在していた更新日時が新しいファイル
テストデータ1(C:\Temp\001の下)

前回の記事にも書きましたが、C:\Tempの下の001、002、003、004の各フォルダの下にはタイムスタンプ(更新日時)が2016/12/13 07:00過ぎのファイルを1つずつ置いています。
これはもちろん、現時点から「2日以上古い」には該当しません。
しかしあくまでもC:\Tempの下の001、002、003、004の各フォルダの更新日時だけを見てフォルダ事ごと削除するので、C:\Temp\001とC:\Temp\002フォルダは、その中に含まれるファイルも含めてすべて削除されています。
(想定した動作です)

テーマ : Windows
ジャンル : コンピュータ

Windows PowerShellのGet-Itemコマンドレットでタイムスタンプが2日以上前のファイルとフォルダの一覧を表示する

前回はSet-ItemPropertyコマンドレットでテストデータのタイムスタンプ(更新日時)を変更してみました。
「タイムスタンプ(更新日時)がXX日以上古いデータを削除する」スクリプトを作成するのが目的なんですが、今回は削除する前に「XX日以上古い」の部分を確認します。
今回はコマンドプロンプトからPowerShellのコマンドレットを実行しています。
これはバッチファイルからPowerShellのスクリプト(.ps1ファイル)を呼び出して実行する事を想定しているためです。

(画像1)C:\Tempフォルダ直下のテストデータ
テストデータ(C:\Tempの直下)
C:\Tempの下には4つのフォルダと4つのファイルがあります。
それぞれ更新日時は2016/12/10、12/11、12/12、12/13のそれぞれ04:00にセットしています。

(画像2)C:\Temp¥001フォルダのファイル
テストデータ1(C:\Temp\001の下)
C:\Tempの下の001、002、003、004の各フォルダの下にはタイムスタンプ(更新日時)が2016/12/13 07:00過ぎのファイルを1つずつ置いています。

(画像3)現在の日時
C:\Windows\system32\cmd.exe
C:\>powershell.exe Get-Date

2016年12月13日 7:51:10



C:\> _
毎朝04:00ごろにデータのエクスポートなり、バックアップなりが実行され、毎朝07:00過ぎに削除処理を実行する事を想定しています。

(画像4)C:\Tempフォルダ直下のフォルダとファイルの一覧
C:\Windows\system32\cmd.exe
C:\>powershell.exe Get-ChildItem -path C:\Temp


    ディレクトリ: C:\Temp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2016/12/10      4:00            001
d----        2016/12/11      4:00            002
d----        2016/12/12      4:00            003
d----        2016/12/13      4:00            004
-a---        2016/12/10      4:00          0 001.txt
-a---        2016/12/11      4:00          0 002.txt
-a---        2016/12/12      4:00          0 003.txt
-a---        2016/12/13      4:00          0 004.txt



C:\> _
今回はGet-Itemに対して、配下のファイルを再帰的に表示するための「-Recurse」オプションは付けません。
これはC:\Temp直下のフォルダのタイムスタンプのみを見て古いフォルダを削除する事を想定しているからです。
(001や002などのフォルダ内のファイルの1つずつのタイムスタンプは見ません。)
あくまでも001や002のフォルダのタイムスタンプのみで古いかどうかを判断して、フォルダごと削除します。

(画像5)削除対象を確認するPowerShellスクリプトを実行した結果
C:\Windows\system32\cmd.exe
C:\>powershell.exe C:\Batch\削除対象の確認.ps1 2


    ディレクトリ: C:\Temp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2016/12/10      4:00            001
d----        2016/12/11      4:00            002
-a---        2016/12/10      4:00          0 001.txt
-a---        2016/12/11      4:00          0 002.txt



C:\> _
PowerShellスクリプトには引数で保存日数を与えています。
直近の「2日間」を残し、それよりも古いデータを表示しています。
現在は2016/12/13 07:51です。
今日12月13日、昨日12月12日は表示されていませんが、これは削除せずに残すことを意味しています。
それよりも古い12月10日と12月11日のデータが表示されていますが、これが削除対象となるわけです。

PowerShellスクリプト「削除対象の確認.ps1」の内容

Param($保存日数)
Get-ChildItem -path C:\Temp | Where-object{((Get-Date) - $_.LastWriteTime).Days -ge $保存日数 }



項目内容
Param($保存日数)呼び出し元のバッチファイルから与えられる引数
Get-ChildItem -path C:\TempC:\Tempフォルダ直下のフォルダとファイルの一覧を取得
Where-object{((Get-Date) - $_.LastWriteTime).Days -ge $保存日数上記で取得したフォルダとファイルの一覧から、タイムスタンプ(更新日時)が指定した保存日数よりも古いデータを抽出

今回は削除対象が間違っていないかどうかを確認するために表示してみました。
実際の削除は次の記事で実行します。

テーマ : Windows
ジャンル : コンピュータ

Windows PowerShellのSet-ItemPropertyコマンドレットでファイルやフォルダのタイムスタンプを変更する

Windows PowerShellでは、フォルダやファイルのタイムスタンプを変更する事が出来るんですね。
タイムスタンプを変更するには、Set-ItemPropertyコマンドレットを使用します。
今回もフォルダやファイルは相対パスで指定します。
PowerShellのコマンド画面で、カレントパスはC:\Tempに移動した状態でコマンドを実行します。

(画像1)Set-ItemPropertyコマンドレットでフォルダの更新日時を変更する
管理者: Windows PowerShell
PS C:\Temp> Get-Item 001



    ディレクトリ: C:\Temp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2016/12/11     19:02            001


PS C:\Temp> Set-ItemProperty 001 -Name LastWriteTime -Value "2015/10/12 1:23"
PS C:\Temp> Get-Item 001


    ディレクトリ: C:\Temp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2015/10/12      1:23            001


PS C:\Temp> _


Set-ItemPropertyコマンドレットで001フォルダのLastWriteTime属性(更新日時)の値を設定する。

Set-ItemProperty 001 -Name LastWriteTime -Value "2015/10/12 1:23"

【変更前】2016/12/11 19:02
【変更後】2015/10/12 01:23

(画像2)フォルダの更新日時の変更前
New-Itemコマンドレットで作成されたフォルダ

(画像3)フォルダの更新日時の変更後
Set-ItemPropertyコマンドレットで更新日時の変更後

Set-ItemPropertyコマンドレットで001フォルダのCreationTime属性(作成日時)の値を設定する。

Set-ItemProperty 001 -Name CreationTime -Value "2015/10/09 10:12"


(画像4)フォルダの作成日時の変更後
Set-ItemPropertyコマンドレットで作成日時の変更後

テーマ : Windows
ジャンル : コンピュータ

Windows PowerShellのNew-Itemコマンドレットで新しいファイルやフォルダを作成する

Windows PowerShellで新しいフォルダやファイルを作成するには、New-Itemコマンドレットを使用します。
他にも同様のコマンドレットがあるかもしれませんが、ここではNew-Itemを使用します。

今回は作成するフォルダやファイルは相対パスで指定します。
PowerShellのコマンド画面で、カレントパスはC:\Tempに移動した状態でコマンドを実行します。

(画像1)PowerShellで新しいフォルダやファイルを作成する
管理者: Windows PowerShell
PS C:\Temp> New-Item 001 -ItemType Directory


    ディレクトリ: C:\Temp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2016/12/11     20:16            001


PS C:\Temp> New-Item 001\001.txt -ItemType File


    ディレクトリ: C:\Temp\001


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2016/12/11     20:16          0 001.txt


PS C:\Temp> _



現在のカレントパスの直下に「001」フォルダを新規に作成します。

New-Item 001 -ItemType Directory


(画像2)New-Itemコマンドレットで作成されたフォルダ
New-Itemコマンドレットで作成されたフォルダ

現在のカレントパスの直下の「001」フォルダの下に、「001.txt」ファイルを作成します。

New-Item 001\001.txt -ItemType File


(画像3)New-Itemコマンドレットで作成されたファイル
New-Itemコマンドレットで作成されたファイル
以上

テーマ : Windows
ジャンル : コンピュータ

VMware vSphere PowerCLIのGet-Datastoreコマンドレットで空き容量が少ないデータストアの一覧を取得する

VMware vSphereの仮想環境を運用していると、データストアの空きが少なくなって困る事があります。
vCenter Serverでアラームの設定は出来るけど、例えば90%を指定していても、一度それを超えてしまえばそれ以降は通報はされません。
それに使用率90%と言っても、データストアサイズ1TBと60TBでは、空き容量のサイズ(GB)が全然違います。

データストアの空き監視では利用率(%)よりも、空き容量(GB)の監視が重要です。
今回は空き容量が一定の値(GB)を下回っているデータストアの一覧を抽出するコマンドの例です。

空き容量が10GB未満のデータストアの一覧を取得する
VMware vSphere PowerCLI 5.1 Release 1
PowerCLI C:\> Get-Datastore -name datastore* | where-Object { $_.FreeSpaceGB -lt 10} | Sort-Object { $_.FreeSpaceGB} | Out-File -FilePath D:\Temp\データストア空き監視.txt

PowerCLI C:\> Get-Date | Out-File
-FilePath D:\Temp\データストア空き監視.txt -Append

PowerCLI C:\> Write-Output 空き容量が10GB以下のデータストアを抽出しています
| Out-File -FilePath D:\Temp\データストア空き監視.txt -Append

PowerCLI C:\> _


空き容量が10GB未満のデータストアの一覧を取得する

Get-Datastore -name datastore* | where-Object { $_.FreeSpaceGB -lt 10} | Sort-Object { $_.FreeSpaceGB} | Out-File -FilePath D:\Temp\データストア空き監視.txt

Get-Date | Out-File -FilePath D:\Temp\データストア空き監視.txt -Append | Out-File -FilePath D:\Temp\データストア空き監視.txt -Append

Write-Output 空き容量が10GB以下のデータストアを抽出しています


コマンド
コマンドの説明
Get-Datastore -name datastore* | where-Object { $_.FreeSpaceGB -lt 10} | Sort-Object { $_.FreeSpaceGB} | Out-File -FilePath D:\Temp\データストア空き監視.txtGet-Datastore -name datastore*
名前が「datastore」で始まる全データストアの一覧を取得

where-Object { $_.FreeSpaceGB -lt 10}
取得したデータストアの名前を使って、空き容量が10GB未満のデータストアに絞り込む

Sort-Object { $_.FreeSpaceGB}
10GB未満のデータストアに絞り込まれた結果を、空き容量の小さい順にソートする

Out-File -FilePath D:\Temp\データストア空き監視.txt
10GB未満のデータストアの一覧を指定したテキストファイルに書き込む
Get-Date | Out-File -FilePath D:\Temp\データストア空き監視.txt -Append10GB未満のデータストア一覧テキストファイルに、今の日時を追記する
Write-Output 空き容量が10GB以下のデータストアを抽出しています | Out-File -FilePath D:\Temp\データストア空き監視.txt -Append10GB未満のデータストア一覧テキストファイルに、コメントを追記する

10GB未満のデータストアが存在すると、こんな感じでテキストファイルが作成されます。


Name                    FreeSpaceGB  CapacityGB
----                    -----------  ----------
datastor03                    7.138     479.750
datastor07                    8.425    2403.750



2016年11月21日 5:01:25


空き容量が10GB以下のデータストアを抽出しています



2016/11/22 06:42更新
Sort-Object { $_.FreeSpaceGB} に対するコマンドの説明の誤りを訂正。
【変更前】
データストア名でソートする
【変更後】
空き容量の小さい順にソートする

テーマ : VMware
ジャンル : コンピュータ

VMware vSphere PowerCLIのGet-VIEventコマンドレットでvCenter Serverのイベントログを取得する

VMware vSphereを運用していると、vCenter Serverのイベントログを見たくなる事があります。
しかし簡単には直接vCenter Serverを利用する事が出来ず、お客様にイベントログを抽出してもらって、メールで送ってもらったりと、なかなか手間がかかったりします。
なので、毎日夜間に直近の24時間分のイベントログを抽出して、日別のログとして保存しておき、必要な時にすぐに送ってもらえるようにしています。(毎日自動でメールに添付して送信しているシステムもあります)

VMware vSphere PowerCLI 5.1 Release 1
PowerCLI C:\> $FinishDay = Get-Date
PowerCLI C:\> $StartDay = (Get-Date).AddHours(-24)
PowerCLI C:\> Get-VIEvent -Start $StartDay -Finish $FinishDay |export-csv -encoding default <ファイル名>

PowerCLI C:\> _


今から過去24時間分のイベントログを抽出するコマンド

$FinishDay = Get-Date
$StartDay = (Get-Date).AddHours(-24)
Get-VIEvent -Start $StartDay -Finish $FinishDay |export-csv encoding default <ファイル名>


Windows PowerShell
PS C:\> $FinishDay = Get-Date
PS C:\> $StartDay = (Get-Date).AddHours(-24)
PS C:\> $FinishDay

2016年11月12日 8:55:34


PS C:\> $StartDay

2016年11月11日 8:55:34


PS C:\> _


変数$FinishDayと変数$StartDayの値を確認する

PS C:\> $FinishDay = Get-Date
PS C:\> $StartDay = (Get-Date).AddHours(-24)
PS C:\> $FinishDay

2016年11月12日 8:55:34


PS C:\> $StartDay

2016年11月11日 8:55:34


PS C:\>

$FinishDayはGet-Dateで、現在の日時そのものです。
$StartDay = (Get-Date).AddHours(-24)は、現在の日時から24時間前を求めてそれを変数$StartDayに入れています。
$StartDay = (Get-Date).AddDays(-1)でも、今回は
同じ意味です、

これを毎日23時59分から0時ちょうどの間にジョブとして実行すれば、その日1日のイベントログをCSVファイルに保存する事が出来ます。

続きを読む

テーマ : VMware
ジャンル : コンピュータ

VMware vSphere PowerCLIのGet-Datastoreコマンドレットでデータストアの空き容量などの一覧を取得する

VMware vSphereの仮想環境をお客さんが運用していて、稀にですがデータストアがいっぱいになって仮想マシンが起動できなくなるような問題が発生します。
データストアの空き容量の監視は重要ですよね。
vCenter Serverでアラームの設定は出来るけど、例えば90%を指定していても、一度それを超えてしまえばそれ以降は通報はされません。
それに使用率90%と言っても、データストアサイズ1TBと60TBでは、空き容量のサイズ(GB)が全然違います。

なので、データストアの空き容量を率(%)ではなく、GBとかMBで取得するコマンドレットです。
日ごとに記録して残しておけば、空き容量の減少の推移を把握し、今後の予測もできます。

(図1)Get-Datastoreコマンドの例1
Get-Datastoreコマンドの例1
データストアの名前、容量、空き容量、タイプ、ファイルシステムバージョンを取得して画面に表示するコマンドの例です。
サイズをGBで表示すると、小数点以下の桁数が揃わないんですね。

Get-Datastore |Format-Table Name,CapacityGB,FreeSpaceGB,Type,FileSystemVersion -A

最後の「-A」は、カラム(列)の幅を自動調整するオプションです。


(図2)Get-Datastoreコマンドの例2
Get-Datastoreコマンドの例2
データストアの名前、容量、空き容量、タイプ、ファイルシステムバージョンを取得して画面に表示するコマンドの例です。
サイズをMBで表示すると、小数点以下が表示されないので桁位置が揃いますね。

Get-Datastore |Format-Table Name,CapacityGB,FreeSpaceGB,Type,FileSystemVersion -A

最後の「-A」は、カラム(列)の幅を自動調整するオプションです。

Get-Datastoreコマンドレットで取得したデータストアの情報から、以下の項目を表示します。
項目名説明
Nameデータストア名
CapacityGB or CapacityMB容量(GB or MB)
FreeSpaceGB or FreeSpaceMB空き容量(GB or MB)
Typeタイプ
FileSystemVersionファイルシステムのバージョン

Get-Datastoreの結果をFormat-Tableに送るのではなく、Select-Objectに送っても同様です。

Get-Datastore |Select-Object Name,CapacityGB,FreeSpaceGB,Type,FileSystemVersion


Get-Datastoreの結果をCSVファイルに出力すれば、もっと多くの項目も確認する事が出来ます。

Get-Datastore |export-csv -encoding default <ファイル名>


テーマ : VMware
ジャンル : コンピュータ

VMware vSphere PowerCLIのGet-Snapshotコマンドレットでスナップショットが作成されている仮想マシンの一覧を取得する

VMware vSphereの仮想環境をお客さんが運用していて、稀にですがデータストアがいっぱいになって仮想マシンが起動できなくなるような問題が発生します。
あるいは仮想マシン上での処理速度が遅くなったとか。
以前に作成したスナップショットが残っていて、差分ファイルが徐々に大きくなってしまったのが原因です。

何故スナップショットが残ったままになっているか。
・仮想マシンのスナップショットを作成して、あとで削除するのを忘れたり
・サーバー管理者が複数いる場合に誰かがスナップショットを作成したのに気づかなかったり
・vStorage APIを利用するバックアップソフトでのバックアップ中に異常終了して、スナップショットが残っていたり

vCenter ServerのGUIで仮想マシンを1つずつ右クリックして、スナップショットが残っているかどうかを見て行くのは正直言って苦痛です。
なので、VMware vSphere PowerCLIのコマンドレットを使用してスナップショットが作成されている仮想マシンの一覧を取得してみました。
 
Get-Snapshotコマンドの例

全仮想マシンの全スナップショットの一覧を表示するコマンドの例です。

Get-VM -name * |Get-Snapshot |Format-Table VM,Created,Name,SizeGB -A


Get-VMで取得した仮想マシン名の一覧をパイプでGet-Snapshotに送って、スナップショットの一覧を取得します。
コマンド説明
Get-VM -name *全ての仮想マシンの名前を取得します
Get-Snapshot全ての仮想マシンのすべてのスナップショットを取得します
Format-Table VM,Created,Name,SizeGB -A
スナップショットの情報から、以下の項目を表示します。
・仮想マシン名
・スナップショットの作成日時
・スナップショットに付けた名前
・スナップショットのサイズ(GB)

最後の「-A」は、カラム(列)の幅を自動調整するオプションです。

Get-Snapshotの結果をFormat-Tableに送るのではなく、Select-Objectに送っても同様です。

Get-VM -name * |Get-Snapshot |Select-Object VM,Created,Name,SizeGB


Get-Snapshotの結果をCSVファイルに出力すれば、もっと多くの項目も確認する事が出来ます。

Get-VM -name * |Get-Snapshot |export-csv -encoding default <ファイル名>


テーマ : VMware
ジャンル : コンピュータ

テスト中

全ての記事を表示する

ブロとも申請フォーム

ブログ検索
プロフィール

norimaki2000

norimaki2000のブログにようこそ
・2013/01/05テンプレートをsantaからhouseに変更
・2012/10/29テンプレートをsweet_donutsからsantaに変更
Follow norimaki2000 on Twitter気軽に話しかけてね

ニューヨーク・マンハッタン(タイムズスクェア)180×135

千葉県在住で東京都内に勤務。SE歴20年超えました。

昔々はオフコンで販売管理などのアプリケーション開発していた。
ファミリーレストランの無線オーダリングやPOS、キッチンプリンタの全国展開なんかもやっていました。
最近はWindowsサーバーとVMware vSphereを中心としたサーバーインフラの提案・構築・保守を中心にやってます。
主な取り扱い製品は、
・Windows 2000 Server以降 (もちろんNT3.5やNT4.0も知っていますが)
・Active Directory (今で言うAD DS)
・Symantec Backup Exec
・Symantec System Recovery
・CA ARCserve Backup for Windows
・CA ARCserve Replication
・CA ARCserve D2D
・EMC RepliStor
・VMware vSphere
・某メーカーのクラスタソフトウェア

どれもこれも中途半端な知識と技術力ですが、なんとかやっています。
私自身は技術や製品を担当する立場ではなく、特定業種のお客さん(ユーザ企業)の対応窓口となるSEの役割りですから、必要であれば詳しい知識や経験豊富な別のSEを探してきてプロジェクトメンバに加えます。

もちろん小さな物件では自分で提案、インストール、お客さんへの導入、アフターサポートまでやります。
大きな物件では提案はやりますが、構築部分は専門部隊に依頼します。
その場合でもアフターサポート窓口は私がやりますので、お客さんに対しては一貫して窓口SEとなります。

サーバの世界の大きなトレンドは統合・仮想化。
2007年はVirtual Server 2005 R2によるサーバ仮想化も、2つのお客さんで本稼動させた。
2008年はVMware ESX 3.5を2セット構築。単純なローカル起動と、SANブート/VMotion/DRS/HA/VCBのフル装備もやった。
2009年はぜひHyper-Vの仮想環境を構築したいな。と思っていたが、なかなか機会に恵まれなかった。
2010年はVMware ESX 4.0でHA/VMotion/VCBバックアップを進行中。

そのほかにも、ドメインコントローラやファイルサーバの全国展開とデータ移行、特定のアプリケーションの実行基盤となるサーバ群のOS・バックアップ・DBクラスタなどインフラ部分の構築などをやっています。


2011年のポイントも引き続き、【ご利用は計画的に】。
今まで長年に渡って仕事も私生活も行き当たりばったりなので、少しでも物事を計画的に進められるようにしたい。
いつも計画性の無さが災いして多くの人に迷惑をかけています。
自分自身も計画的な仕事ができないため、いつもいろいろ苦労しています。
今年はさらに計画的に仕事をするようにしなきゃ。

それと若手を上手に使うようにならなきゃならん。
若手の育成はもちろんだけど、僕自身も仕事を上手に他の人に振ることができるようになりたい。
仕事の種類のせいなのか性格なのか、どうしても一人で抱え込んでしまうから。

【Twitter】2010年の元旦から始めました。平均して1日あたり10ツィート程度です。
仕事関連の呟きが少し、くだらない呟きがほとんどかな。
Follow norimaki2000 on Twitter
・norimaki2000 on Twitter

Follow norimaki2000 on Twitter
・norimaki2000 on Twilog


オンライン上ではあるけれど、今まで知らなかった人たちと交流する機会を得ることになり、非常に刺激を受けます。
仕事でも私生活でも、いろんな人のつぶやきは息抜きにもなり、また助けられたり、あるいは「もっとがんばんなきゃ」と励みになったりします。
Twitterを考え出した人の発想、システムとして作り上げた努力と情熱はすごい!!


【好きな音楽】ベテランの皆さんなら浜田省吾、尾崎豊、エコーズ、若手なら鬼束ちひろ、平原綾香、現在注目の若手はいきものがかり

【好きなアイドル】千葉県柏市を中心に活動する地元アイドルの「コズミック☆倶楽部」を激推し中です。

【好きな飲み物】シャンパンはご存知モエ・エ・シャンドン ブリュット アンペリアル、ビールはキリン ブラウマイスター、水ならビッテル、お茶ならキリン生茶

【好きなTVドラマ】Xファイル、24、ミレニアム、ER、CSI:科学捜査班シリーズ、NCIS:ネイビー犯罪捜査班、ザ・プラクティス、ボストン・リーガル



パソコン困り事相談もよろしく


最近の記事
最近のコメント
カレンダー
11 | 2018/12 | 01
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
カテゴリー
FC2カウンター
キーワード

Windows_Server VMware_ESX VMware vCenter_Server PowerShell VMware_Player PowerCLI vSphere_Client VirtualCenter Active_Directory vStorage_API Converter 文音 コズミック☆倶楽部 Windows Hyper-V Microsoft_Security_Essentials あいひょん なるみん Windows_8 VMware_Converter Backup_Exec vSphere カラオケ sora Red_Hat_Enterprise_Linux System_Center VCB SQL_Server Windows_Server_2012 Tech_Fielders VMware_vSphere ESX 麗美 RHEL Internet_Explorer ARCserve_Backup メモリダンプ System_Recovery vMotion Exec Oracle Symantec Directory VMware_HA Active Backup Firefox ジン子 Server DMC-FZ1000 vSphere_CLI remi マークス Vista NTFS Oracle_Database Twitter Recovery XenServer DRS schtasks Visual_Studio wevtutil System Office Sysinternals 氷結 sonoka キリン コズミック倶楽部 若手 Windows_Update SE vCenter_Converter 糖質 ついにステップワゴンを契約してしまった のどごし生 洗車 洗濯 セルシオ グランダム フィット 東京国際フォーラム ラガー スリムス サッポロ 一番搾り食物繊維 カルディ ロッキー スタローン スパリゾートハワイアンズ セキュリティ バルボア エイドリアン 破損 2008 オレッツァ 白石美帆 経済産業省 スパークリングウォーター corega サクセス 掃除 おやつカンパニー えびしお おとなのおつまみ ベビースター カーナビ 関西空港 ワイヤーアクション ムエタイ マッハ デュポン シャンプー台のむこうに コロン ブラックホーク・ダウン ジョシュ・ハートネット 映画 東京タワー 献血 お茶のチューハイ ポケモン・スタンプラリー けんけつちゃん はばたき福祉事業団 写真 日本赤十字社 ハワイ 神戸 キャンプ 万座温泉 夏休み 草津 鬼押し出し園 カーポート 高原 バーベキュー 修復 羽田 グレープフルーツ ウォーター 北野 伊藤園 人口甘味料  サーバ 雨どい CG れみ ジャンプフェスタ ITIL OpenOffice.org VMFS OneDrive HUAWEI GR5 Paper.li Windows_Serverバックアップ Word wbadmin Uptime.exe XP ULPC DSP OEM 浜田省吾 Linux vStorag_API Virtual_Infrastructure バックアップ SkyDrive バッチ OpenOffice Apache グループポリシー iStorage Windows_Azure NVR500 IP38X/N500 VMware_ESXi AWS ARCserve_Replication robocopy ARCserve_D2D USB2.0 USB CoolMax CR-V Tween DVD FZ1000 Hyperion Gathers LUMIX CDRW-AB24JL CD ATAPI 0x0000007B コマンドライン Windows_Server_2016 vSphere_Web_Client CAB Brio IDE IZZE SUPPLEX STOPエラー SAP コズミック☆LOVE SweetGrass Tools Thunderbird Intel Resource Replication NetBackup NR-7900A Kit OREZZA Panasonic PCI PC-Success 圧縮 

月別アーカイブ
リンク
RSSフィード