PowerShell:从变量中删除或替换引号

Pat*_*Pat 12 powershell blat

我正在使用Get-EventLog来设置变量,然后使用事件ID描述设置另一个变量.然后我使用blat.exe将此信息通过电子邮件发送给组.

描述包含引号.引号导致blat退出并出错.

有没有办法从event.Message中删除引号并用空格或其他东西替换它们?

Mus*_*idi 18

如果变量是String对象,那么您可以执行以下操作:

$Variable.Replace("`"","")
Run Code Online (Sandbox Code Playgroud)


Pat*_*Pat 12

我其实刚刚得到它.引号和双引号的数量令我感到困惑,但这已经奏效,而且不会出错.

$var -replace '"', ""
Run Code Online (Sandbox Code Playgroud)

这些引用是:单引号,双引号,单引号,逗号,双引号,双引号.


pap*_*apo 10

根据具体情况,使用Trim(Char[]) 方法可能更简单:
...删除所有前导和尾随出现...

e.g. $your_variable.Trim('"')  
Run Code Online (Sandbox Code Playgroud)

它只会从 $your_variable 的开头和结尾删除引号。它将保留任何引号,无论是否转义,它们都在 $your_variable 的文本中,因为它们是:

PS C:\> $v.Trim('"') # where $v is: "hu""hu"hu'hu"
hu""hu"hu'hu
Run Code Online (Sandbox Code Playgroud)

您可以使用Trim('"'), Trim("'"),但也可以同时使用:Trim("`"'")

请注意,Trim() 不关心引号是否是孤立的,这意味着它将删除结束或开始引号,而不管它在字符串的另一侧是否有成对的引号。

PS C:\Users\Papo> $hu = "A: He asked `"whos this sofa?`" B: She replied: `"Chris'`""
PS C:\Users\Papo> $hu
A: He asked "whos this sofa?" B: She replied: "Chris'"
PS C:\Users\Papo> $hu.trim('"')
A: He asked "whos this sofa?" B: She replied: "Chris'
PS C:\Users\Papo> # and even worse:
PS C:\Users\Papo> $hu.trim("'`"")
A: He asked "whos this sofa?" B: She replied: "Chris
Run Code Online (Sandbox Code Playgroud)