第一次使用PowerShell 5,我在调用一个将消息写入文件的函数时遇到了麻烦。以下是我正在做的简化版本。
workflow test {
function logMessage {
param([string] $Msg)
Write-Output $Msg
}
function RemoveMachineFromCollection{
param([string]$Collection, [string]$Machine)
# If there's an error
LogMessage "Error Removing Machine"
# If all is good
LogMessage "successfully remove machine"
}
$Collections = DatabaseQuery1
foreach -parallel($coll in $Collections) {
logMessage "operating on $coll collection"
$Machines = DatabaseQuery2
foreach($Mach in $Machines) {
logMessage "Removing $Mach from $coll"
RemoveMachineFromCollection -Collection $coll -Machine $Mach
}
}
}
test
这里是它生成的错误信息:
术语“logMessage”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包含路径,请验证该路径是否正确,然后重试。 + CategoryInfo : ObjectNotFound: (logMessage:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException + PSComputerName : [localhost]我已经尝试在文件中移动 logMessage 函数并尝试全局范围。
在任何其他语言中,我都可以从任何其他函数调用 logMessage。因为这就是函数的目的。
有什么“工作流程方式”可以重用一块代码吗?
我需要创建一个日志记录模块并将其加载到工作流中吗?