我有一个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
如何将值正确传递给脚本?
答案 0 :(得分:3)
$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