このようにスクリプトブロックにハッシュテーブルを渡そうとしましたが、$arg3
はハッシュテーブルです。しかし、それは失敗しました。誰かが正しい方法でそれを行う方法を知っていますか?スクリプトブロックに何かを渡しているようには見えません。ハッシュテーブルをスクリプトブロックに渡すには?
$commandParameters.ComputerName = $ComputerName
$commandParameters.ScriptBlock = {
param(
[Parameter()]
[switch]$arg1 = $false,
[Parameter()]
[array]$arg2,
[Parameter()]
[hashtable]$arg3
)
enter code here
Doing something here
}
Invoke-Command @commandParameters -ArgumentList $arg1, @($arg2), $arg3
=========================================== ======================
私は答えを自分自身を発見し、それは私のために動作します。これは連想配列を作成し、それをスクリプトブロックに渡す方法です。理由は分かりませんが、関数内のハッシュテーブルを参照するためにドット表記($ hash.a.b)を使用していましたが、それは機能しますが、スクリプトブロックでは機能しません。スクリプトブロックで[](例:$ hash [a] [b])を使う必要があるようです。
$ compADGroups = @ {}
foreachの($広告グループで$広告グループ){
if ($compADGroups.$computerNameGroup -eq $null) {
$compADGroups[$computerName] = @{}
$compADGroups[$computerName]["Group"] = @{}
$compADGroups[$computerName]["Group"] = $hashString
}
}
$セッション=新のPSSession -ComputerName 'コンピューター1'
Invoke-Commandコマンド-Session $セッション-ArgumentList $ compADGroups -ScriptBlock {のparam($ compADGroups)$ compADGroups [$ ENV:コンピュータ名] [ "グループ"]}
Get-PSSession |削除-PSSessionコマンド
いただきましたエラーメッセージ? –
「失敗」を定義します。期待どおりに動作しないのは何ですか?スクリプトブロックはどのように定義されていますか?ハッシュテーブルはどのように定義されていますか? –
@Yean私たちが適切に援助できるよう、この情報すべてを元の質問に編集する必要があります。 –