逃避powershell命令中的特殊字符

时间:2013-10-02 03:59:02

标签: windows powershell special-characters

我是PowerShell的新手,但我面临一个非常基本的问题。当我运行以下命令时,powershell会抱怨。它似乎与特殊字符有关:[*,=,&,<,>]。任何想法我如何逃避它们?这是powershell版本2. [我使用winexe从linux盒子运行powershell命令。如果我复制粘贴ps命令它似乎工作正常,但远程运行它会导致powershell抱怨。]

winexe“cmd / c echo。| powershell Set-ExecutionPolicy bypass -Force -Scope CurrentUser; C:\ test.ps1 -name'B * =&< +>%N'-extra_logging'0'”

dos charset'CP850'不可用 - 使用ASCII字符串开始:在行:1字符:106 + Set-ExecutionPolicy bypass -Force -Scope CurrentUser; C:\ test.ps1 -lun<<<< 'B * =缺少终结符:'。在行:1 char:110 + Set-ExecutionPolicy bypass -Force -Scope CurrentUser; C:\ test.ps1 -lun'B * =<<<< + CategoryInfo:ParserError:(B * =:String)[],ParentContainsErro rRecordException + FullyQualifiedErrorId:TerminatorExpectedAtEndOfString

系统找不到指定的文件。系统找不到指定的文件。

2 个答案:

答案 0 :(得分:2)

问题不是powershell而是常规命令shell。对winexe的作用做出合理的假设,命令的相关部分是

cmd /c echo . | powershell Set-ExecutionPolicy bypass -Force -Scope CurrentUser;C:\test.ps1 -name 'B*=&<+>%N' -extra_logging '0'

包含命令shell解释的一些特殊字符。单引号中的内容不被视为引用,因此您需要明确引用它们。只是为了让生活变得困难,因为你正在使用滚边,字符被处理两次所以你需要双引号:

cmd /c echo . | powershell Set-ExecutionPolicy bypass -Force -Scope CurrentUser;C:\test.ps1 -name 'B*=^^^&^^^<+^^^>^%N' -extra_logging '0'

插入符使命令shell按字面意思取出以下字符。

或者,如果发生这种情况winexe将命令传递给命令shell而不是直接执行它,则可能需要在每个特殊字符之前进行三重引号,即七个插入符号。

答案 1 :(得分:0)

我可能错了,但我相信它是向后的撇号或严重的符号,即“`”