1

このコードを実行すると、次のエラーが表示されました。

$filesExist = Test-Path($file)
if ($filesExist) {
    $shell_app=new-object -com shell.application
    $zip_file = Get-Item "$mindCrackFolder\files.zip"
    $destination = Get-Item $mindCrackFolder

    $destination.Copyhere($zip_file.items(), 0x14)
    #Remove-Item "$zip_file"
    #Remove-Item "install.ps1"
}

エラー:

Method invocation failed because [System.IO.FileInfo] doesn't contain a method named 'items'.
At C:\Users\User1\Desktop\ps install\install.ps1:33 char:5
+     $destination.Copyhere($zip_file.items(), 0x14)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

しかし、私はすでに $destination を操作する IO オブジェクトに変換しましたか? PS を試すのはこれが初めてです。

4

3 に答える 3

2

これは $destination とは関係ありません。 $zip_file.items()が最初に評価され、エラー メッセージは、返された .NET System.IO.FileInfo オブジェクトにメソッドGet-Itemがないことを示していますItems()Get-Itemファイルに関する情報 (サイズ、最終書き込み時間、読み取り専用かどうかなど) を提供するオブジェクトのみを返します。Get-Item を使用して ZIP ファイルの内容にアクセスすることはできません。

ZIP ファイルの内容を抽出する必要がある場合は、PowerShell Community Exensions の Expand-Archiveコマンドレットの使用を検討してください。

于 2013-01-08T17:28:47.453 に答える
0

エラーは、items()メソッド on =を使用するオブジェクトについて話しています$zip_file。Powershell には組み込みの zip サポートがありません。それを作成する (shell.application com-object を使用してググる) か、.net ライブラリを追加する必要があります。(Get-ChildItem)$zip_fileから取得したものと同様に、単純な FileInfo オブジェクトです。メソッドdirは含まれていません。items()

解決策: 前述のように、Googlepowershell zip filesで PowerShell で zip ファイルを使用する方法について読んでください。私の提案はDotNetZipです

于 2013-01-08T17:28:54.083 に答える
0

あなたがこれらをどこで何を学んだかはわかりませんが、いくつかのコードを間違ってコピーし、アドホックに変更を加えたようです。必要なことを行う以下のスクリプトを試してください。

$shell_app=new-object -com shell.application
$filename = "test.zip"
$zip_file = $shell_app.namespace((Get-Location).Path + "\$filename")
$destination = $shell_app.namespace((Get-Location).Path)
$destination.Copyhere($zip_file.items(), 0x14)

itemsandcopyHereメソッドは、FileInfoから得られるオブジェクトでは使用できませんGet-Item。上記のように使用してください。

于 2013-01-08T17:35:22.160 に答える