Powershell $args[0]不接受完整参数

Powershell $args[0]不接受完整参数,powershell,Powershell,我有一个PowerShell脚本,它使用$args[0]接受一个参数: filepath=args[0] 我的文件路径位于临时文件夹中。当我的文件路径为给定路径时,这不会导致问题: C:\Users\tommy.tom\AppData\Local\Temp\setup\File1.exe 但当我的文件路径如下所示时: C:\Users\$test~1\AppData\Local\Temp\setup\File2.exe 路径中的$test变为$null,路径变为: C:\Users\~1\

我有一个PowerShell脚本,它使用
$args[0]
接受一个参数:

filepath=args[0]
我的文件路径位于临时文件夹中。当我的文件路径为给定路径时,这不会导致问题:

C:\Users\tommy.tom\AppData\Local\Temp\setup\File1.exe
但当我的文件路径如下所示时:

C:\Users\$test~1\AppData\Local\Temp\setup\File2.exe
路径中的
$test
变为
$null
,路径变为:

C:\Users\~1\AppData\Local\Temp\setup\File2.exe

如何将该值正确地传递给脚本?

$test
被powershell视为一个变量,可能需要解决它。 也许问题在于如何调用脚本


例如,如果像这样调用
\myScript.ps1“aa$atest”
args[0]
变量将包含
aa
,而如果调用
\myScript.ps1“aa$atest”
args[0]
var将包含
aa$test
,因为单引号的内容不会被扩展
$test
被powershell视为一个变量,可能正试图解决它。 也许问题在于如何调用脚本


例如,如果您这样调用
\myScript.ps1“aa$atest”
args[0]
变量将包含
aa
,而如果您调用
\myScript.ps1“aa$atest”
args[0]
变量将包含
aa$test
,因为单引号的内容不会扩展到奈格尔答案中。当使用双引号时,您需要在路径中使用变量。您必须使用后面的勾号“`”来转义$。这将指示powershell不要将其视为变量

所以你也可以写

$subDir = "AppData"
.\myScript.ps1 "aa`$atest\$moreDir"

这将有效地通过:aa$atest\AppData添加到奈格尔答案中。当使用双引号时,您需要在路径中使用变量。您必须使用后面的勾号“`”来转义$。这将指示powershell不要将其视为变量

所以你也可以写

$subDir = "AppData"
.\myScript.ps1 "aa`$atest\$moreDir"
这将有效地传递:aa$atest\AppData