0

在 Powershell 中,我可以将函数作为函数的参数传递吗?

Test (!((Get-SPSolution $name).Deployed))

Function Test {
    param ($extFunc)

    do { Start-Sleep -Seconds 30 } while ($extFunc)
}
4

2 回答 2

2

你可以这样尝试:

Test "(!((Get-SPSolution $name).Deployed))"

Function Test {
    param ($extFunc)

    do { Start-Sleep -Seconds 30 } while ((iex $extFunc))
}

将 a 传递[string]给您的Test函数并使用invoke-expressioncmdlet

于 2013-05-22T16:49:42.237 回答
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)
于 2013-05-22T18:22:06.147 回答