function關鍵字和腳本塊我有這樣的PowerShell腳本:美元符號,在PowerShell中
function Func1 ($val)
{
Write-Host "$val is processed by Func1";
}
function Func2($val)
{
Invoke-Command -ScriptBlock `
${function:Func1} -ArgumentList "$val is processed by Func2 and";
}
function Func3($val)
{
$function:Func2.Invoke("$val is processed by Func3 and");
}
Func3 "Value";
這工作 - 它輸出值由FUNC3處理,並通過FUNC2處理,並通過FUNC1處理 - 但
什麼的$:我的兩兩件事混淆{功能:函數名}代碼(即一個美元符號後面的大括號後面功能後跟一個冒號後面的名字f Func2的意思是後跟一個大括號)我可以看到它調用了Func1,但我不明白它爲什麼起作用。
什麼是$ function:function-name.Invoke Func3中的代碼是什麼意思?我知道它使用腳本塊功能,因爲Invoke方法被調用,但我不清楚如何$ function.function-name是一個腳本塊。
我仍然對此感到困惑 - 「要從函數:驅動器訪問函數(獲取它的內容,而不是調用它),請使用$ function:foo」。這是獲取函數的內容,還是獲得具有函數功能的腳本塊?如果它只獲取內容,那麼如何在Func3中調用Invoke呢?此外,我還不清楚$ {function:foo}(即美元符號後面的大括號)的含義。 – 2013-03-24 16:42:37
啊,好的@ andy-arismendi,你的編輯更好地解釋了我的事情。有沒有這方面的參考,或者你是否通過試驗和錯誤發現了它?我搜索了高低,但我找不到任何官方文檔。這不利於網絡搜索美元符號和冒號。 – 2013-03-24 16:58:01
內容是腳本塊。 '$ function:Func2 | gm'顯示你正在訪問的內容。只需'PS> $ function:Func2'調用腳本塊的ToString方法,以便僅顯示文本內容。 – 2013-03-24 16:58:07