第一次使用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
Run Code Online (Sandbox Code Playgroud)
这是它生成的错误:
术语'logMessage'不被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者是否包含路径,请验证路径是否正确,然后重试。
+ CategoryInfo:ObjectNotFound:(logMessage:String)[],CommandNotFoundException
+ FullyQualifiedErrorId:CommandNotFoundException
+ PSComputerName:[本地主机]
我尝试过在文件中四处移动logMessage函数,甚至尝试使用全局范围。
用任何其他语言,我都可以从任何其他函数中调用logMessage。这就是功能的目的。 …
powershell workflow function powershell-workflow powershell-5.0