PowerShell PSCX Read-Archive:无法绑定参数...问题

时间:2010-06-17 18:37:16

标签: powershell-v2.0 pscx

我正在遇到一个问题,我似乎无法使用PowerShell社区扩展(v2.0.3782.38614)提供的Read-Archive cmdlet。

以下是用于展示我遇到的问题的简化示例:

$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

任何人都有任何想法为什么第一个样本抱怨但第二个样本工作正常?

1 个答案:

答案 0 :(得分:1)

我在PSCX的CodePlex主页上的问题跟踪器中创建了一个项目。显然,这是PscxPathInfo当前已知的问题。 (请参阅PSCX问题跟踪器中的item #28023)。

解决方法是:

Get-Item $dest | Read-Archive 

感谢CodePlex上的r_keith_hill进行该特定工作。