以参数作为字符串
问题描述:
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字符串调用脚本块?
答
你$scriptblock
字符串赋值在语法上是无效的,可以使用下面的字符串,以避免逃避'
S:
$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
+0
谢谢!奇迹般有效。 – k7s5a
为什么你在一个字符串中有参数?你是如何获得他们的第一个地方? –