我有一個PowerShell腳本,其目的是獲取文件列表,然後在每個文件上做一些工作。在工作流旁邊使用遞歸函數
文件的列表由一個遞歸函數產生這樣的:
從該函數我這樣做的工作流上的每個文件需要的文件的列表,並執行工作(並行)function Recurse($path)
{
.. create $folder
foreach ($i in $folder.files) {
$i
}
foreach ($i in $folder.subfolders) {
Recurse($i.path)
}
}
獨立。該代碼看起來是這樣的:
workflow Do-Work {
param(
[parameter(mandatory)][object[]]$list
)
foreach -parallel ($f in $list) {
inlinescript {
.. do work on $Using:f
}
}
}
這兩部分,然後用下面的邏輯組合:
$myList = Recurse($myPath)
Do-Work -list $myList
的問題是,這會產生一個錯誤:
A workflow cannot use recursion.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : RecursiveWorkflowNotSupported
爲什麼這發生在遞歸函數和工作流是分開的時候嗎? 有什麼辦法解決這個問題?
$ myList = Recurse($ myPath)不應該是遞歸$ myPath(沒有括號)? –
我不知道:)林新的PowerShell,我想我曾經調用這樣的功能 –