2
我想編寫一個powershell函數,該函數通過基於作爲輸入參數傳入的scriptblock動態創建一個腳本塊來返回腳本塊。我似乎沒有多少運氣。從腳本塊動態創建PowerShell腳本塊
很容易編寫一個方法來調用scriptblock兩次。
$x = { write-host "Hello" }
function DoIt([scriptblock] $s) { $s.Invoke(); }
function DoItTwice([scriptblock] $s) { $s.Invoke(); $s.Invoke(); }
DoIt($x)
DoItTwice($x)
很難編寫一個方法,該方法返回兩次調用(輸入)scriptblock的效果的scriptblock。以下不工作
function TwiceAsScriptBlock([scriptblock] $s)
{
function twice
{
$s.Invoke();
$s.Invoke();
}
return { twice }
}
我想沿着這些線路的變體。如果我在返回的scriptblock上調用了Invoke(),我得到以下錯誤: 'TwiceAsScriptBlock:無法處理參數's'的參數轉換.' – Rob 2013-02-14 16:17:50
它爲我工作,我會放一個截圖。 你運行的是什麼版本的powersehll? – 2013-02-14 16:19:53
檢查更新的答案,正如您在我調用新的scriptblock時看到的那樣,它會輸出消息兩次。 – 2013-02-14 16:23:03