|
Re: Escape character question On Aug 6, 1:22 pm, lawndart <lawnd...@gmail.com> wrote:
> I have a DOS command I'm trying to run from powershell, as part of an
> automation script. The problem I'm having is an "Incomplete String
> Token" error when I use Invoke-Expression on it. Here are the relevant
> bits:
>
> $pwdSetString = "bemcmd.exe -o213 -
> i""`{10011001-1001-1001-0101-010101010101`}"" -pw:""$oldPwd"" -
> pl:""$newPwd"" -cemslbk01"
>
> $pwdSetString
>
> $results = Invoke-Expression -command $pwdSetString
>
> Output
> -------------------------
> PS - powershell> ./set-BUEServiceAccountPwd.ps1
> bemcmd.exe -o213 -i"{10011001-1001-1001-0101-010101010101}" -pw:"asd" -
> pl:"asd" -cmachineName
> Invoke-Expression : Incomplete string token.
> At \Path\set-BUEServiceAccountPwd.ps1:16 char:29
> + $results = Invoke-Expression <<<< -command $pwdSetString
> BUE Password set result:
>
> I know that the {} characters are the issue, but they are pretty much
> required in the command. This command works fine in DOS and I assumed
> that escaping them would make PS happy as well. Any ideas on how to
> run this?
>
> Lawndart
Try:
PS 1> $pwdSetString = { bemcmd.exe `-o213 `-
i"`{10011001-1001-1001-0101-010101010101`}" `-pwd:"$oldPwd" `-
pl:"$newPwd" `-cemslbk01 }
PS 2> $oldPwd = "blah"
PS 3> $newPwd = "pox"
PS 4> & $pwdSetString
I found that the minus sign parameter prefixes were confusing the
powershell parser as it was treating them as operators; I also changed
it to use scriptblock syntax to get rid of one layer of quotes.
Hope this helps,
- Oisin |