【问题标题】:How to escape characters in Powershell如何在 Powershell 中转义字符
【发布时间】:2018-04-18 19:56:02
【问题描述】:

我正在使用下面的命令来测试 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' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

【问题讨论】:

  • cmd /c但不是cmd \c

标签: powershell url cmd command-prompt


【解决方案1】:

如果只需要对url进行编码,可以使用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

【讨论】:

    猜你喜欢
    • 2020-01-17
    • 2021-09-28
    • 2015-10-26
    • 1970-01-01
    • 2021-06-20
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多