PowerShell Invoke-Expression命令参数包含逗号

Bal*_*tar 4 powershell mapped-drive special-characters

密码包含PowerShell特殊字符时,我该怎么办?

Invoke-Expression -Command "net use x: $Path /USER:domain1\user1 7Ui4RT,@T /persistent:no"
Run Code Online (Sandbox Code Playgroud)

这在语法上失败 - 因为PowerShell解释7Ui4RT,@T为数组:

Invoke-Expression -Command "net use x: $Path /USER:domain1\user1 7Ui4RT`,@T /persistent:no"
Run Code Online (Sandbox Code Playgroud)

这在语法上失败 - 显然是因为PowerShell无法解释 7Ui4RT``,@T

Invoke-Expression -Command "net use x: $Path /USER:domain1\user1 "7Ui4RT,@T" /persistent:no"
Run Code Online (Sandbox Code Playgroud)

这失败是因为PowerShell将其解释7Ui4RT,@T为对象而不是字符串(error ="找不到接受参数'System.Object []'的位置参数.").

我该怎么办?

Emp*_*LII 7

你为什么用它Invoke-Expression来评估你的命令?如果需要动态构建一组参数,可以将它们放在一个数组中:

$command = 'net'
$commandArgs = @('use','x:',$Path,'/USER:domain1\usr1','7Ui4RT,@T','/persistent:no')
& $command $commandArgs
Run Code Online (Sandbox Code Playgroud)

如果您提前知道命令,可以直接调用它: net $commandArgs


Dav*_*vid 3

用单引号括起来7Ui4RT,@T,即

'7Ui4RT,@T'
Run Code Online (Sandbox Code Playgroud)