我有一个powershell脚本,它调用另一个传递字符串参数的powershell文件。
param (
[string]$strVal = "Hello World"
)
$params = @{
message = "$strVal"
}
$sb = [scriptblock]::create(".{$(get-content $ps1file -Raw)} $(&{$args} @params)")不知何故,脚本传递消息变量时不带双引号,因此powershell文件只接收消息变量的第一部分(在空格之前),即“你好”。
如何传递带空格的strVal变量(即"Hello World")?
发布于 2020-01-17 23:53:27
双引号对通知PowerShell执行字符串扩展。如果您想逐字输出双引号,则需要对它们进行转义(防止扩展)或用单引号将它们括起来。但是,单引号对表示PowerShell从字面上处理内部的所有内容,这样您的变量就不会插值。在这种情况下,您需要字符串扩展、变量插值和文字双引号。
您可以执行以下操作:
# Double Double Quote Escape
@{message = """$strVal"""}
Name Value
---- -----
message "Hello World"
# Backtick Escape
@{message = "`"$strVal`""}
Name Value
---- -----
message "Hello World"报价解析从左到右工作,这意味着最左边的报价类型优先。因此,由于外部的单引号对,'"$strVal"'将按字面意思打印所有内容。"'$strVal'"将打印单引号和$strVal的值。
https://stackoverflow.com/questions/59790254
复制相似问题