在Powershell中,我可以将函数作为函数的参数传递吗?
Test (!((Get-SPSolution $name).Deployed))
Function Test {
param ($extFunc)
do { Start-Sleep -Seconds 30 } while ($extFunc)
}
答案 0 :(得分:2)
您可以尝试这样:
Test "(!((Get-SPSolution $name).Deployed))"
Function Test {
param ($extFunc)
do { Start-Sleep -Seconds 30 } while ((iex $extFunc))
}
将[string]
传递到Test
函数并使用invoke-expression
cmdlet
答案 1 :(得分:2)
你应该能够毫无问题地做到这一点。但有一点,您需要在声明它之后调用测试函数,否则您将收到错误(术语“测试”不被识别为cmdlet的名称)。
以下是演示它的示例,您应该每秒都看到写入控制台的消息。
function Test-SPSolution
{
New-Object PSObject -Property @{Deployed=$false}
}
Function Test {
param ($extFunc)
do {
Start-Sleep -Seconds 1
Write-Host "extFunc = $extFunc"
} while ($extFunc)
}
Test (!(Test-SPSolution foo).Deployed)