使用变量存储路径时Get-ChildItem报错,路径混入当前工作目录的原因
问题原因与解决方案
你碰到的这个问题,核心是给变量$SPath赋值时多套了一层单引号,导致PowerShell解析路径时出了岔子。
为什么会混入D:\DMH\?
PowerShell识别UNC路径的标准开头是\\,但你赋值时给路径套了单引号,变成了'\\MHRZRSEFS501...'。这个带单引号的字符串不再是合法的UNC路径,PowerShell会把它当成相对路径处理,自动把当前工作目录(也就是你启动PowerShell时的D:\DMH\)拼接到这个"相对路径"前面,于是就出现了报错里那种拼接后的错误路径。
正确的解决方法
方法1:去掉多余的单引号,用单引号包裹路径(推荐)
因为你的路径里包含空格和$符号,用单引号可以让PowerShell原样保留这些字符,不会把$解析成变量:
$SPath = '\\MHRZRSEFS501\F$\NewSkies FileShares\FRBatch$\Test\Test.txt' Get-ChildItem -Path $SPath Write-Host "SPath =$SPath"
执行后SPath的输出会是不带额外单引号的正确路径,Get-ChildItem也能正常找到文件。
方法2:用双引号包裹并转义$符号
如果习惯用双引号,需要把路径里的$用反引号`转义,避免PowerShell把它们当成变量解析:
$SPath = "\\MHRZRSEFS501\F`$\NewSkies FileShares\FRBatch`$\Test\Test.txt" Get-ChildItem -Path $SPath
内容的提问来源于stack exchange,提问作者Dan Hess
相关产品推荐
相关产品推荐

