2

作業中の各サーバー内のファイル システム パーティションが正しく配置されていることを確認しようとしています。次のスクリプトを実行しようとすると、使用するifステートメントに基づいて、すべての仮想サーバーが調整されているか、調整されていないと主張します(1つはコメントアウトされています)。

$myArr = @()
$vms = get-vm | where {$_.PowerState -eq "PoweredOn" -and $_.Guest.OSFullName -match "Microsoft Windows*" } | sort name
foreach($vm in $vms){
    $wmi = get-wmiobject -class "win32_DiskPartition" -namespace "root\CIMV2" -ComputerName $vm
    foreach ($partition in $wmi){
        $Details = "" | Select-Object VMName, Partition, Status
        #if (($partition.startingoffset % 65536) -isnot [decimal]){
        if ($partition.startingoffSet -eq "65536"){
            $Details.VMName = $partition.SystemName
            $Details.Partition = $partition.Name
            $Details.Status = "Partition aligned"
        }
        else{
            $Details.VMName = $partition.SystemName
            $Details.Partition = $partition.Name
            $Details.Status = "Partition not aligned"
        }
    $myArr += $Details
    }
}
$myArr | Export-CSV -NoTypeInformation "C:\users\a411882\Documents\Scripts\PartitionAlignment.csv"

私のコードの何が問題なのか誰にも分かりませんか? 私はまだパーティションについて学んでいるので、整列を確認するために開始オフセット番号を確認する方法がわかりません。

4

1 に答える 1

0

に文字列ではなく仮想マシン オブジェクトを渡していますget-wmiObject -ComputerName。これを行うと、get-wmiObject が RPC エラーをスローします。-computerName $vm.guest.Hostnameの代わりに試すことができ-computerName $vmます。

コメント行で を使用すると、常に整数またはゼロになる剰余%が返されます。代わりに商を期待していて、それが整数かどうかを評価したかったのではないでしょうか?

PS C:\temp> (1 / 2) -isnot [int]
True
PS C:\temp> (2 / 1) -isnot [int]
False

最近の Windows OS は、パーティションを自動的に整列するので、それがあります。これは、ゲストパーティションのより詳細な説明へのリンクを含む、VMware でのアライメント全般に関する優れた投稿です。

于 2013-10-25T13:52:34.197 に答える