我正在從批處理腳本啟動幾個 powershell 實體。
有了一個,我想尾隨一個檔案并為每一行添加一個時間戳。該命令本身直接在 powershell 中運行良好:
filter timestamp {"$(Get-Date -Format G): $_"}; Get-Content .\MyLog.txt -tail 10 -wait | Select-String 'Search term' | timestamp
但是當我在 cmd 中使用以下命令時,出現錯誤:
start powershell -Command "filter timestamp {"$(Get-Date -Format G): $_"}; Get-Content .\MyLog.txt -tail 10 -wait | Select-String 'Search term' | timestamp"; pause
錯誤示例:
In Zeile:1 Zeichen:18
start powershell -Command "filter timestamp {"$(Get-Date -Format G): ...
~~~~~~~~
CategoryInfo : InvalidArgument: (:) [Start-Process], ParameterBindingException
FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand
我想知道我是否需要逃跑?嘗試了很多選擇,但下班后我需要一些專業幫助。
非常感謝。
uj5u.com熱心網友回復:
在 Powershell 中,有幾種方法可以在雙引號之間的字串中包含雙引號字符(即 `")。從 CMD 提示符啟動時,這就是命令列的問題。
要解決您的問題,請在 -Command 字串中使用"""而不是 "(當然,命令的開頭和結尾除外)。見下文:
start powershell -Command "filter timestamp {"""$(Get-Date -Format G): $_"""}; Get-Content .\MyLog.txt -tail 10 -wait | Select-String 'Search term' | timestamp"; pause
此外,您可以使用 powershell.exe 中的 -NoExit 開關,而不是在命令末尾添加暫停:
start powershell -NoExit -Command "filter timestamp {"""$(Get-Date -Format G): $_"""}; Get-Content .\MyLog.txt -tail 10 -wait | Select-String 'Search term' | timestamp"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/407469.html
標籤:
