5

ハッシュテーブルを環境変数に保存したいのですが、Powershell では可能ですか?

これをテストする方法は次のとおりです。

$env:test = @{}
$env:test
$env:test|gm

出力が次のようになるため、混乱します。

System.Collections.Hashtable

TypeName: System.String

名前 MemberType 定義

---- ---------- ---------- Clone メソッド System.Object Clone()
CompareTo メソッド int CompareTo(System.Object 値), int CompareTo(string strB) . ..

…ということで、$env:test を直接返すと「Hashtable」を取得するのですが、それを get-member にパイプすると、system.string が返されます。誰かがこの動作を説明できますか?

4

3 に答える 3

1

環境変数($env:stringVariable)は文字列です。ただし、タイプ ハッシュテーブル グローバルの文字列以外の変数を作成したいようです。これは、グローバル修飾子 ($global:hashtableVariable)を使用して行うことができます。これにより、ここでデモされているように、あるスクリプト ファイルから別のスクリプト ファイルの変数にアクセスできます。

PowerShellScriptFile-1.ps1

$global:hashtableVariable = @{
   'key1' = 'value1'
   'key2' = 'value2'
}

PowerShellScriptFile-2.ps1

$global:hashTableVariable.GetEnumerator() | ForEach-Object {
       Write-Host "$($_.Key):$($_.Value)"
}
于 2016-07-12T05:33:54.113 に答える
0

とった。「System.Collections.Hashtable」は、$env:test に割り当てられた文字列値です。

于 2012-10-29T20:06:29.533 に答える