如何逃避“<” PowerShell脚本中的密码字符

时间:2013-04-24 22:31:19

标签: powershell

这是我的剧本:

@rasdial "My VPN" "user@domain" 'my<password'

我的密码包含<个字符。输入PowerShell控制台后,没有@的情况就可以了。

我知道`是引用字符,但显然它不适用于<。 我的密码包含许多特殊字符,因此必须引用它。但是当使用双引号时它不起作用。如何正确转义密码?有没有办法从外部文件导入它? BTW,rasphone.exe记得我的密码,也许有办法使用它?


这是我找到的解决方案。我使用双引号而不是单引号。它在第一时间无效,因为我的真实密码中还有%,需要引用%%

因此,在.cmd脚本内部:'my%`<password'无法使用,但"my%%<password"将会有效。

任何人都可以确认他在.cmd脚本中使用了'...`<...'之类的字符串吗?它在不同的PowerShell版本中表现不同吗?我的是Windows 8 x64。

2 个答案:

答案 0 :(得分:2)

你试过了吗?

'my`<password'

`&lt; ---代号键反引号是Powershell转义字符。

我还鼓励使用-AsSecureString

在PS控制台中进行测试:

PS C:\Users\Athomsfere> $pw = 'my<password'
PS C:\Users\Athomsfere> write-host $pw
my<password

所以它本身不是角色。

它仍然像这样:(作为剧本)

'@rasdial', "My VPN", "user@domain", 'my<password' |`
    ForEach
    {
        Write-Host $_
    }

答案 1 :(得分:0)

我遇到了类似的问题,花了我一段时间才找到根底。就我而言,我的密码与此相似

  

} K)/] j .. | {?*&%($ @ 7} e $%0>; ._#

将其放在双引号中可以进行变量扩展,因此显然无法正常工作。 用单引号括起来应该是可行的,但对我而言却不是。用问号转义问题字符对我也不起作用。

对我有用的是先用单引号引起来,然后用双引号引起来

  

'“} K)/] j .. | {?*&%($ @ 7} e $%0>; ._#”'