Powershell版本:3.0開始作業cmdlet刪除通過的對象鑄造
你好同事scripters。我有一個問題,我似乎無法找到答案。
摘要: 嘗試開始作業時,scriptblock參數正在移除[System.Collections.Specialized.OrderedDictionary]的轉換並將其替換爲[Hashtable](即如果我沒有將參數scriptblock)。我的方案的下面是一個例子:
$Job = Start-Job -ScriptBlock {
param(
[System.Collections.Specialized.OrderedDictionary]$Params = $(throw "Please pass Params.")
)
} -Name "Execute" -ErrorVariable Errors -ErrorAction Stop -ArgumentList $Params
當嘗試一個OrderedDictionary對象傳遞到與它鍵/值對的工作,它就像它傳遞一個對象,具有更多的屬性比它期待該對象類型:
$Params = [ordered]@{ "Param1" = "Value1"; "Param2" = "Value2" }
我使用以下行來執行我的工作:
$ret = Receive-Job $job -Wait -AutoRemoveJob
結果:
錯誤:無法處理參數'Params'的參數轉換。無法創建「System.Collections.Specialized.OrderedDictionary」類型的對象。未找到System.Collections.Specialized.OrderedDictionary對象的Param1屬性。 可用屬性是: [COUNT],[IsReadOnly],[鍵],[值],[IsFixedSize],[SyncRoot上],[IsSynchronized]
注意:當通過無鍵/值對,所述轉換仍然保留,並且對象傳遞到scriptblock就好了(在參數列表中轉換)。
任何人都可以詳細說明確切原因或開始作業cmdlet正在做什麼?我只是使用錯了嗎?這個對象類型是否在作業中不可用?是因爲它是一個系統對象嗎?
感謝@TheMadTechnician用@符號指出錯字。我已在主帖中更新過。然而,我不確定你所說的實現是否按照預期工作,就好像你在腳本塊中用「write-host $ ParamIn.GetType()」替換了「$ ParamIn」,它返回一個錯誤,指出對象是空值。所以我不認爲這個對象是按照預期被傳遞到工作中的。對此有何想法? –