我是否包含一个包含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字符串调用脚本块?
答案 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