我有一个powershell脚本,我想通过cammand行执行它。为此,我需要输入xml文件的路径。最好把问题表现出来。错误:找不到文件
我的所有文件都在同一个目录C:\Users\fynne\test中(原因是我为之编写此脚本的用户(,但不知何故,在加载xml时跳过了测试目录(找不到C:\Users\fynne\01-38-029.xml(。我不知道为什么会发生这种事
这就是我加载xml的方式。
$PatientA = $args[0]
$PatientB = $args[1]
$XmlA = New-Object System.XML.XMLDocument
$XmlA.Load($PatientA)
$XmlB = New-Object System.XML.XMLDocument
$XmlB.Load($PatientB)
有人知道原因并有解决办法吗?我知道我可以通过使用一些字符串操作和$pwd来修复它,但我宁愿不这样做。
Thx
PowerShell将尝试解析相对于当前提供程序位置的非绝对路径,但.NET方法(如XmlDocument.Load()
(将改为相对于当前进程的工作目录解析这些路径。
您可以使用Convert-Path
:手动将相对路径转换为绝对路径
$PatientA,$PatientB = $args[0..1] |Convert-Path
$XmlA = New-Object System.XML.XMLDocument
$XmlA.Load($PatientA)
$XmlB = New-Object System.XML.XMLDocument
$XmlB.Load($PatientB)
如果您想尝试进一步验证路径,您也可以使用Resolve-Path
,其中包括提供程序元数据:
$PatientA = $args[0] |Resolve-Path
if($PatientA.Provider.Name -ne 'FileSystem'){
throw 'First path was not a file system path...'
return
}