簡體   English   中英

將帶有單引號的參數傳遞給.PS1腳本

[英]Passing argument with one single quote in it to a .PS1 script

我正在測試一個將放入win10右鍵單擊上下文菜單的PS腳本,該腳本只接受路徑信息,然后將其回顯到我的終端窗口。 注冊表項如下所示: Computer\\HKEY_CLASSES_ROOT\\*\\shell\\MyScript\\command @="powershell.exe -window hidden -command .'\\"G:\\\\path to my script\\\\MyScript.ps1\\"' '%V'"

該腳本只是$args

對於大多數常規路徑,它運行正常。 現在我堅持文件名包含一個單引號的情況,如下所示: "D:\\John's file.txt"

它拋出一個錯誤:

The string is missing the terminator: '. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

我該怎么做才能解決這個問題?

我自己找到了解決方案。

  1. 根據這篇文章 ,注冊表項必須修改為: Computer\\HKEY_CLASSES_ROOT\\*\\shell\\MyScript\\command @="powershell.exe -window hidden -file \\"G:\\\\path to my script\\\\MyScript.ps1\\" "%V""

而不是-command ,使用-file%V周圍的單引號應該是雙引號。

2.要獲得完整路徑,您必須使用-join運算符連接由空格分隔的字符串(如果路徑包含空格):

$path = $args -join " "

Powershell v6用戶可以使用join-string cmdlet。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM