【发布时间】:2017-02-25 10:27:55
【问题描述】:
我试过这个命令,它工作正常:
$path = "C:\sometext.txt"
[System.IO.File]::ReadAllBytes("$path")
但是当我尝试在 PowerShell 中读取具有唯一 ID 的文件的所有字节时,它不起作用:
$path = "\\.\Volume{3386ab07-0000-0000-0000-501f00000000}\sometext.txt"
[System.IO.File]::ReadAllBytes("$path")
我使用唯一 ID:
$listdrive = ""
$drivelistuniqueID = Get-Volume
foreach ($item in $drivelistuniqueID)
{
$listdrive += $item.UniqueId + "DriveLetterSplIttEr"
}
$listdrive=$listdrive.Replace("?",".")
$listdrive
如果我不将? 替换为.,PowerShell 会说:
使用“1”参数调用“ReadAllBytes”的异常:“非法字符
小路。”
在行:3 字符:1
+ [System.IO.File]::ReadAllBytes("$path")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ArgumentException
知道如何解决这个错误吗? 我只需要读取带有 GUID(唯一 ID)的文件。
【问题讨论】:
-
那么问题是什么? “不起作用”很模糊,它会抛出任何错误吗?
-
@Mathias R. Jessen:我写错了。异常调用...你也可以试试
-
是的,但是您声明当您将
?替换为.时它也不起作用 - 在这种情况下会发生什么? -
@Mathias R. Jessen :powershell 说路径中有非法字符
-
所以以
\\?\和\\.\开头的路径都会出现同样的错误?
标签: .net powershell powershell-3.0 powershell-4.0