0

このフォーム投稿を、作成しようとしている PowerCLI スクリプトのベースラインとして使用しています。

Powershell Get-QADUser の結果を SQL テーブルに

私の変更されたスクリプトは次のようになります。

Add-PSSnapin VMware.VimAutomation.Core
Add-PSSnapin SqlServerCmdletSnapin100
Add-PSSnapin SqlServerProviderSnapin100

$db_server = "127.0.0.1\VIM_SQLEXP"
$db = "Billing"
$table = "vmdata"
$username = "import"
$pwd = "myPassWord"

# First, clear existing table
$sql_query_del = "DELETE FROM $table"
Invoke-Sqlcmd -ServerInstance $db_server -Database $db -Username $username -Password $pwd -Query $sql_query_del

# Get vms and resources add to DB
Get-resourcepool -name finance | get-vm | foreach {
    $name = $_.Name
    $PowerState = $_.PowerState
    $NumCPUs = $_.'Num CPUs'
    $MemoryGB = $_.MemoryGB    
    Write-Host " Name : $Name       PowerState : $PowerState       MemoryGB : $MemoryGB       Num CPUs : $NumCPUs"

    $sql_query = "INSERT INTO $table (Name, PowerState, MemoryGB, NumCPUs) VALUES ('$Name', '$PowerState', '$MemoryGB', '$NumCPUs')"
    Invoke-Sqlcmd -ServerInstance $db_server -Database $db -Username $username -Password $pwd -Query $sql_query

}

私の問題は、このコマンドを実行したときにスペースが含まれる CPU の数です。

Get-resourcepool -name finance | get-vm 


Name                 PowerState Num CPUs MemoryGB
----                 ---------- -------- --------
GreatPlains01        PoweredOn  4        8.000

これを参照して結果を表示する適切な方法は何ですか?

これをパワーシェルで実行すると、次の結果が得られます。

 Name : GreatPlains01       PowerState : PoweredOn       MemoryGB : 8       Num CPUs :

そのため、使用している変数が正しくありません。 [] "" と ' ' を Num CPU で試しましたが、成功しませんでした。

4

1 に答える 1

0

Get-VM コマンドレットの出力の列ヘッダーは「Num CPUs」ですが、プロパティ名は NumCPU です。したがって、次を使用する必要があります。

$NumCPUs = $_.NumCPU

于 2014-03-04T17:40:17.953 に答える