在这里有几个与此相关的问题,但它们专门针对写主机。我要像使用双引号,然后在powershell中使用大括号-Command
powershell.exe -Command "'example.exe' /f`"`{GUID`}`""
运行的东西,只有它失败,错误
Missing closing '}' in statement block.
At line:1 char:396
+ $mypid=(get-process EXEName*).id;wait-process -id $mypid;
& `C:\Users\User\AppData\Local\Temp\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\Target.exe`
/s /ig``{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`}` /instance=1 /f3`C:\Recordings`
/f4`uninstall-log.txt` /f1`C:\Users\User\AppData\Local\Temp\`{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`}\setup.iss`
/f2`C:\Users\User\AppData\Local\Temp\`{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`}\setup.log` /removeonly <<<<
+ CategoryInfo : ParserError: (CloseBraceToken:TokenId) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingEndCurlyBrace
我开始"
和含{}
(如/f"C:\Folder\{GUID}\program.exe"
而这些不会引起任何麻烦其他字符串。这只是我的论点大括号与双引号相邻:
/ig`"`{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`}`"
在错误消息中,它可能是也可能不是值得注意的是,所有的双引号都没有了,所以我的/ ig参数留下了两个反引号。我相信我的版本是2.0。这是我的实际(修改)命令:
powershell -Command "$mypid=(get-process EXEName*).id;wait-process -id
$mypid;& 'C:\Users\User\AppData\Local\Temp\{XXXXXXXX-XXXX-XXXX-XXXX-
XXXXXXXXXXXX}\Target.exe' /s /ig`"`{XXXXXXXX-XXXX-XXXX-XXXX-
XXXXXXXXXXXX`}`" /instance=1 /f3`"C:\Recordings`" /f4`"uninstall-log.txt`"
/f1`"C:\Users\User\AppData\Local\Temp\`{XXXXXXXX-XXXX-XXXX-XXXX-
XXXXXXXXXXXX`}\setup.iss`"
/f2`"C:\Users\User\AppData\Local\Temp\`{XXXXXXXX-XXXX-XXXX-XXXX-
XXXXXXXXXXXX`}\setup.log`" /removeonly"
任何人都可以对此有所了解吗?我不知道为什么它会失效。谢谢!
为什么在/ f之后有一个双引号?您已将字符串'“'example.exe'/ f”'分隔,但{GUID}不是由引号分隔的。 –
@TonyHinkle我相信example.exe会引用双引号。删除它们导致powershell错误C:\ Users \ User \ AppData \ Local \ Temp \ {XXXXXXXX-XXXX-XXXX-XXXX- XXXXXXXXXXXX} \ Target.exe/s'不被识别为cmdlet的名称,功能,脚本文件或可操作的程序。 – sirdank