我正在嘗試提出一個 PowerShell 行程來參考包含空格的服務路徑。這是因為Qualys 105484。
我知道決議引擎很復雜,運行帶有嵌入式引號的 cmd 命令至少很難說。我希望我離得很近,另一雙眼睛會有所幫助。
我試圖從 PowerShell 運行的 cmd 命令是
sc create OcaLogSvc binpath= "\"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc\""
以下是一些嘗試和下面的評論,每個都顯示了 binPath 顯示的結果
$serviceName = "OcaLogSvc"
& sc.exe config $serviceName binPath= '""\""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc\""""'
# ""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc""
& sc.exe config $serviceName binPath= '""\""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc""\""'
# ""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc""
& sc.exe config $serviceName binPath= '"""\"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc\""""'
# ""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc""
& sc.exe config $serviceName binPath= "\C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc\"
# \C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc"
我通過運行驗證
sc.exe qc $serviceName | sls "BINARY"
嘗試了其他幾種組合,但上述組合是唯一成功的組合。
我很可能會放棄,而是將一些字串通過管道傳輸到我可以呼叫的 .bat 檔案中。那或直接編輯注冊表。我只是覺得這是可能的。
我無法使用停止決議引數,因為我打算在發現路徑名時使用變數。我也只是沒有引數的大規模目標命令。我將手動或至少以不同于我在這里嘗試的方式解決這些問題。
我還嘗試使用CommandLineToArgvWvia檢查 cmd 字串,Split-CommandLine但這些知識并沒有很好地轉化為上面的示例。
uj5u.com熱心網友回復:
似乎您正在尋找:
'"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc"' - 這將產生一個字串 "C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc"
由于命令中的空格,您嘗試修復的問題僅存在。另一種選擇可能是使用舊的 DOS 名稱c:\progra~1\或將您的應用程式安裝到不包含空格的檔案夾中C:\AppRecovery\Agent\R3LogService\OcaLogSvc
uj5u.com熱心網友回復:
感謝您指出本檔案
我嘗試使用sc.exe命令修改我機器中的服務,但未能更新它,盡管命令運行成功!然后我認為我們可以使用注冊表項更新 exe 路徑
正如您現在可能的那樣,服務詳細資訊存在于注冊表中:
HKLM:\SYSTEM\CurrentControlSet\Services\$service
因此,為了使用引號更新您的服務,您只需使用以下命令在注冊表中更新它Set-Itemproperty:
$service = "OcaLogSvc"
Set-Itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Services\$service" -Name 'ImagePath' -value '"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc"'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/418649.html
標籤:
上一篇:如何將變數中的內容與PowerShell上的哈希表進行比較
下一篇:PowerShell硬碟驗證程式
