Powershell脚本块,参数为字符串

时间:2017-04-16 11:58:52

标签: powershell

我是否包含一个包含powershell脚本块的字符串:

$scriptBlock = 'Param (
    [string]$param1,
    [string]$param2,
    [switch]$param3
)
Write-Output ('param1: {0}' -f $param1)
Write-Output ('param2: {0}' -f $param2)
Write-Output ('param3: {0}' -f $param3)'

在第二个字符串中,我有脚本块的参数。

$arguments = '-param1 "param1Value" -param2 "param2Value" -param3'

我的问题是如何使用aruments字符串调用脚本块?

1 个答案:

答案 0 :(得分:1)

您的$scriptblock字符串分配在语法上无效,请使用here-string以避免必须转义'

$scriptBlock = @'
Param (
    [string]$param1,
    [string]$param2,
    [switch]$param3
)
Write-Output ('param1: {0}' -f $param1)
Write-Output ('param2: {0}' -f $param2)
Write-Output ('param3: {0}' -f $param3)
'@

您可以使用$scriptblock字符串的内容定义一个函数:

$functionName = "__command$(Get-Random)"
New-Item -Path function:\ -Name $functionName -Value $scriptBlock

然后使用Invoke-Expression

调用它
$result = Invoke-Expression "$functionName $arguments"

清理:

Remove-Item function:\$functionName