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番目のサンプルはうまく機能しますか?