powershell - 将有空格的字符串值传递给另一个powershell文件
问题描述
我有一个 powershell 脚本,它调用另一个传递字符串参数的 powershell 文件。
param (
[string]$strVal = "Hello World"
)
$params = @{
message = "$strVal"
}
$sb = [scriptblock]::create(".{$(get-content $ps1file -Raw)} $(&{$args} @params)")
不知何故,脚本传递了不带双引号的消息变量,因此 powershell 文件只接收消息变量的第一部分(在空格之前),即“Hello”。
如何传递带有空格的 strVal 变量(即“Hello World”)?
解决方案
双引号对指示 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
.
推荐阅读
- javascript - 如何从时间戳获取时区?
- python - __file__ 在某些模块上返回 None
- swiftui - 仅在满足条件时如何应用edgeIgnoringSafeAre?
- python - glmnet Python 库加载问题
- android - 如何使用 MediaSession 将音频元数据传递给 MediaBrowserService
- google-apps-script - 通过使用应用程序脚本在电子邮件中包含表单选项通过电子邮件发送 Google 表单
- html - 双滚动捕捉镀铬错误
- sql - 连接 2 个未连接的表,但通过多对多关系连接到同一个表
- javascript - 配置列表表单以根据 Sharepoint Online 中的 CurrentUser.email 值隐藏列
- r - 绘制神经网络的结构