我的powershell脚本与外部程序接口,该程序以
格式发送不同数量的参数primary site=Peachtree Street
并以逗号分隔
primary site=Peachtree Street, last logon=13 Nov 2013, sender-ip-10.10.10.10
我一直在互联网上搜索如何将$ args转换为字符串 - 否则$ args删除逗号,我需要逗号
以下是我为$ args
尝试的内容sender-ip = 10.10.10.10,主站点位置= peachtree street,由= jsmith创建
第一个剧本
write-host $args
$args = $args | Out-String
write-host $args
第一次输出
sender-ip=10.10.10.10 primary site location=peachtree street created by=jsmith
sender-ip=10.10.10.10
primary
site
location=peachtree
street
created
by=jsmith
第二个剧本
write-host $args
$args = "'" + $args + "'"
write-host $args
第二输出
sender-ip=10.10.10.10 primary site location=peachtree street created by=jsmith
'System.Object[] site location=peachtree System.Object[] by=jsmith'
第三个脚本
write-host $args
foreach ($i in $args){
$i = $i | Out-String
}
write-host $args
第3次输出
sender-ip=10.10.10.10 primary site location=peachtree street created by=jsmith
sender-ip=10.10.10.10 primary site location=peachtree street created by=jsmith
但是如何保留逗号????
请帮助!!!
答案 0 :(得分:2)
引用你的输入
"sender-ip=10.10.10.10, primary site location=peachtree street, created by=jsmith"
逗号用于创建数组,但在文本周围引用它会将所有内容保存为单个字符串。
就我个人而言,我还建议您避免使用args
并创建参数,以便将其称为-paramtername "sender-ip=10.10.10.10, primary site location=peachtree street, created by=jsmith"
。或者至少使用$args[0]
。如果有人忘记引号,事情可能会中断,因为$args
将成为一个数组。
更新:这应该有效。但是,这是一个“肮脏的修复”。
Write-Host (($args | % { $_ -join ", " }) -join " ")
答案 1 :(得分:1)
您是否考虑编写脚本以将其作为管道输入而非参数?
$script = @'
Begin{}
Process {$_}
End {}
'@
$script | set-content testscript.ps1
'primary site=Peachtree Street, last logon=13 Nov 2013, sender-ip-10.10.10.10' | ./testscript.ps1
primary site=Peachtree Street, last logon=13 Nov 2013, sender-ip-10.10.10.10
然后你不受解析参数的影响。
答案 2 :(得分:1)
由于你无法控制你的输入,这样的东西可能会让你回到以逗号分隔的列表。
($args | select $_) -join ','
答案 3 :(得分:1)
人们总是似乎忘记了糟糕的旧输出字段分隔符变量$OFS
,例如:
C:\PS> function foo {$OFS=',';"$args"}
C:\PS> foo sender-ip=10.10.10.10 primary site location=peachtree street created by=jsmith
sender-ip=10.10.10.10,primary,site,location=peachtree,street,created,by=jsmith
当数组的元素连接在一起显示为字符串时,将在数组的元素之间使用包含$OFS
的字符串 - 通常在包含数组的变量在双引号字符串中引用时。