我是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
系统找不到指定的文件。系统找不到指定的文件。
答案 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)
我可能错了,但我相信它是向后的撇号或严重的符号,即“`”