代码之家  ›  专栏  ›  技术社区  ›  Robert Groves

PowerShell PSCX读取存档:无法绑定参数…问题

  •  0
  • Robert Groves  · 技术社区  · 14 年前

    我遇到了一个问题,使用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 回复  |  直到 14 年前
        1
  •  1
  •   Robert Groves    14 年前

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

    解决方法是:

    Get-Item $dest | Read-Archive 
    

    感谢CodePlex上的rèkeithèhill所做的特殊工作。

    推荐文章