1
如果我有一個我希望能夠直接調用的powershell腳本文件,稱爲Find-MyThing,我該如何向它添加一個函數以供它使用?如何將函數放入我想直接調用的Powershell腳本文件中?
基本上,我想寫一個這樣的文件:
Param(
[Parameter(ValueFromPipeline=$true)]
$ThingReference)
process{
$intermediateValue = DoSomeProcessing($ThingReference)
$finalValue = DoSomeMoreProcessing($intermediateValue)
return $finalValue
}
Function DoSomeProcessing($thing){...}
Function DoSomeMoreProcessing($thing){...}
但PowerShell不喜歡我具有該文件在一個單獨的功能。我可以將主要處理包含在函數中,但是無法從文件外部實際調用它。
這可能嗎?還是應該以完全不同的方式處理事情?
他們不必在開始塊。他們只需在文件中的任何位置,然後再嘗試打電話給他們。 – EBGreen
如果我把函數放在begin塊之外,那麼它將不會運行 - 它給了我一個錯誤: Get-Process:無法評估參數'Name',因爲它的參數被指定爲腳本塊並且沒有輸入。沒有輸入就無法評估腳本塊 。 –
@EBGreen是錯誤的:如果你想使用過程塊(並聲明變量聲明爲綁定'ValueFromPipeline'你必須)而不是定義必須在'開始'塊。順便說一句:這是你的問題的答案,所以你應該把它標爲一個。我寫了一篇關於你前一段時間的錯誤的博客文章(http://becomelotr.wordpress.com/2011/10/25/begin-process-end/) – BartekB