如何在Powershell中转义字符

时间:2018-04-18 11:22:38

标签: powershell url cmd command-prompt

我使用下面的命令来测试URL,并在监视工具中使用相同的内容。

cmd \c powershell -command "Invoke-WebRequest http://V2-LBDAX-PRD01:8101/DynamicsAx/Services/AxManageabilityServiceGroup" | findstr /c:"200 OK"
cmd \c powershell -command "Invoke-WebRequest http://V2-LBDAX-PRD01:8101/DynamicsAx/Services/BIServices" | findstr /c:"200 OK"
cmd \c powershell -command "Invoke-WebRequest http://V2-LBDAX-PRD01:8101/DynamicsAx/Services/CARDIXFServiceGroup" | findstr /c:"200 OK"
cmd \c powershell -command "Invoke-WebRequest http://V2-LBDAX-PRD01:8101/DynamicsAx/Services/CARItemStorePriceAvailServiceGroup" | findstr /c:"200 OK"

第一个和第二个命令有效,但第三个和第四个命令不起作用。我怎么逃避/ C.所有网址都有/ C,我的错误如下所示

'ARDIXFServiceGroup'未被识别为内部或外部命令, 可操作程序或批处理文件。

1 个答案:

答案 0 :(得分:0)

如果您只需要对网址进行编码,则可以使用HttpUtility.UrlEncode方法

[System.Web.HttpUtility]::UrlEncode("http://V2-LBDAX-PRD01:8101/DynamicsAx/Services/BIServices")

然后用当前网址

替换输出

此外,您可以使用Powershell -EncodedCommand对整个命令进行编码,也可以将findstr /c:"200 OK"转换为Powershell cmdlet Select-String,以便:

# Encode the Command First:
$command = 'Invoke-WebRequest http://V2-LBDAX-PRD01:8101/DynamicsAx/Services/BIServices | Select-String "200 OK"'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
cmd /c powershell -encodedCommand $encodedCommand