PowerShell Invoke-Expression command parameter contains comma
mapped-drive, powershell, special-characters
Solution
Why are you using `Invoke-Expression` to evaluate your command? If you need to build up a set of arguments dynamically, you can place them in an array:
$command = 'net'
$commandArgs = @('use','x:',$Path,'/USER:domain1\usr1','7Ui4RT,@T','/persistent:no')
& $command $commandArgs
If you know the command ahead of time, you can call it directly: `net $commandArgs`
Problem
What should I do when a password contains PowerShell special characters? ``` Invoke-Expression -Command "net use x: $Path /USER:domain1\user1 7Ui4RT,@T /persistent:no" ``` This fails on syntax -- because PowerShell interprets `7Ui4RT,@T` as an array: ``` Invoke-Expression -Command "net use x: $Path /USER:domain1\user1 7Ui4RT`,@T /persistent:no" ``` This fails on syntax -- apparently because PowerShell can't interpret `7Ui4RT``,@T` ``` Invoke-Expression -Command "net use x: $Path /USER:domain1\user1 "7Ui4RT,@T" /persistent:no" ``` This fails because PowerShell interprets `7Ui4RT,@T` as an object, not a string (error = "A positional parameter cannot be found that accepts argument 'System.Object[]'."). What should I do?