0

这是我的脚本:

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

我的密码包含<字符。这@在进入 PowerShell 控制台时不起作用。

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


这是我发现有效的解决方案。我使用双引号而不是单引号。第一次没用,因为%我的真实密码里面也有,需要加引号%%

因此,在 .cmd 脚本内部:'my%`<password'不会工作,但"my%%<password"会。

'...`<...'任何人都可以确认他在 .cmd 脚本中使用了字符串并且它有效吗?它在不同的 PowerShell 版本中的行为是否不同?我的来自 Windows 8 x64。

4

2 回答 2

6

我有一个类似的问题,我花了一段时间才弄明白。就我而言,我有一个类似的密码

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

将它放在双引号中允许变量扩展,因此显然这不起作用。把它放在单引号中应该可以工作,但对我没有用。用反勾号转义问题字符对我也不起作用。

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

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

于 2019-04-10T11:00:40.390 回答
2

你有没有尝试过:

'my`<password'

` <--- 波浪号键反引号是 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 $_
    }
于 2013-04-25T00:55:18.157 回答