0

PowerShell Community Extensions(v2.0.3782.38614)から入手できるRead-Archiveコマンドレットを使用して、頭を悩ませることができないという問題が発生しています。

これは、私が遭遇している問題を示すために使用されるカットダウンサンプルです。

$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

さらに紛らわしいのは、上記の2つのRead-ArchiveサンプルでPath引数として渡された2つの変数を比較すると、同じように見えることです。

これ...

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

最初のサンプルがうまくいく理由について誰かが何か考えを持っていますが、2番目のサンプルはうまく機能しますか?

4

1 に答える 1

1

PSCX の CodePlex ホームの課題トラッカーにアイテムを作成しました。どうやらこれは PscxPathInfo の現在の既知の問題です。( PSCX Issue Tracker の項目 #28023を参照してください)。

これを回避するには、次のようにします。

Get-Item $dest | Read-Archive 

その特定の回避策については、CodePlex の r_keith_hill の功績によるものです。

于 2010-07-09T01:44:51.790 に答える