我遇到了一个问题,我似乎无法理解如何使用通过PowerShell社区扩展提供的Read-Archive cmdlet (v2.0.3782.38614)。
这是一个经过简化的示例,用于展示我遇到的问题:
$mainPath = "p:\temp"
$dest = Join-Path $mainPath "ps\CenCodes.zip"
Read-Archive -Path $dest -Format zip运行上述命令会产生以下错误:
Read-Archive : Cannot bind parameter 'Path'. Cannot convert the "p:\temp\ps\CenCodes.zip" value of type "System.String" to type "Pscx.IO.PscxPathInfo".
At line:3 char:19
+ Read-Archive -Path <<<< $dest -Format zip
+ CategoryInfo : InvalidArgument: (:) [Read-Archive], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Pscx.Commands.IO.Compression.ReadArchiveCommand如果我不使用Join-Path来构建传递给Read-Archive的路径,它就可以工作,如下例所示:
$mainPath = "p:\temp"
$path = $mainPath + "\ps\CenCodes.zip"
Read-Archive -Path $path -Format zip上面的输出:
ZIP Folder: CenCodes.zip#\
Index LastWriteTime Size Ratio Name ----- ------------- ---- ----- ----
0 6/17/2010 2:03 AM 3009106 24.53 % CenCodes.xls更令人困惑的是,如果我比较上面两个Read-Archive示例中作为Path参数传递的两个变量,它们似乎是相同的:
这..。
Write-Host "dest=$dest"
Write-Host "path=$path"
Write-Host ("path -eq dest is " + ($dest -eq $path).ToString())输出...
dest=p:\temp\ps\CenCodes.zip
path=p:\temp\ps\CenCodes.zip
path -eq dest is True有没有人知道为什么第一个样本会抱怨,而第二个样本工作得很好?
发布于 2010-07-09 09:44:52
我在PSCX的CodePlex主页上的问题跟踪器中创建了一个项目。显然,这是当前PscxPathInfo的一个已知问题。(请参阅PSCX问题跟踪器中的item #28023 )。
一种解决方法是执行以下操作:
Get-Item $dest | Read-Archive 感谢r_keith_hill on CodePlex在这方面所做的特殊工作。
https://stackoverflow.com/questions/3064513
复制相似问题