在 Powershell 中,我可以将函数作为函数的参数传递吗?
Test (!((Get-SPSolution $name).Deployed))
Function Test {
param ($extFunc)
do { Start-Sleep -Seconds 30 } while ($extFunc)
}
在 Powershell 中,我可以将函数作为函数的参数传递吗?
Test (!((Get-SPSolution $name).Deployed))
Function Test {
param ($extFunc)
do { Start-Sleep -Seconds 30 } while ($extFunc)
}
你可以这样尝试:
Test "(!((Get-SPSolution $name).Deployed))"
Function Test {
param ($extFunc)
do { Start-Sleep -Seconds 30 } while ((iex $extFunc))
}
将 a 传递[string]
给您的Test
函数并使用invoke-expression
cmdlet
你应该能够毫无问题地做到这一点。但有一件事,您需要在声明后调用测试函数,否则您将收到错误消息(“测试”一词未被识别为 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)