$ args [0]不接受完整的论证

时间:2014-07-31 13:36:59

标签: 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\AppData\Local\Temp\setup\File2.exe

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

2 个答案:

答案 0 :(得分:3)

PowerShell将{p> $test视为变量,可能是它要解决它。 也许问题是你如何调用你的脚本。

例如,如果您将其称为.\myScript.ps1 "aa$atest",则args[0] var将包含aa,而如果您致电.\myScript.ps1 'aa$atest',则args[0] var将包含aa$test {1}}因为单引号的内容不会被扩展

答案 1 :(得分:2)

添加到Naigel的答案。放入双引号时,您也希望在路径中使用变量。你必须使用后面的勾号"`"来逃避$。这表明powershell不会将其视为变量。

所以你也可以写

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

这将有效地传递:aa $ atest \ AppData