gpt4 book ai didi

.net - Powershell [System.IO.Compression.ZipArchiveEntry] 不包含名为 'ExtractToFile' 的方法

转载 作者:行者123 更新时间:2023-12-02 23:01:37 42 4
gpt4 key购买 nike

我有一个 powershell 脚本,我想从中提取特定条目。我似乎无法弄清楚如何解决无法在 .NET ZipArchiveEntry 对象上找到扩展方法的错误。

下面我的脚本将运行并将“写出”zip 中的文件,但是当它到达 $entry.ExtractToFile($dst) 行时,它会产生以下错误:

Method invocation failed because [System.IO.Compression.ZipArchiveEntry] does not contain a method named 'ExtractToFile'.

Add-Type -AssemblyName System.IO.Compression -ErrorAction Stop
Add-Type -AssemblyName System.IO.Compression.FileSystem -ErrorAction Stop

$filesToExtract = @(
"appsettings.json";
"Content\cms\index.xml";
)
$archive = "C:\Users\User1\Desktop\archive.zip"
$dstRoot = "C:\Users\User1\Desktop\test"
$zip = [IO.Compression.ZipFile]::OpenRead($archive)
foreach($entry in $zip.Entries){
if ($filesToExtract -contains $entry.FullName){
$dst = [io.path]::combine($dstRoot, $entry.FullName)
%{ "Extract ==> " + $dst }

$entry.ExtractToFile($dst)

}
}
$zip.Dispose()

最佳答案

尝试使用 [System.IO.Compression.ZipFileExtensions]。如果提取文件已经存在,它将失败。

[cmdletbinding()]
Param()

Add-Type -AssemblyName System.IO.Compression.FileSystem -ErrorAction Stop

$filesToExtract = @(
"t.txt";
)
$archive = "$PSScriptRoot\t.zip"
$dstRoot = "$PSScriptRoot"
$zip = [System.IO.Compression.ZipFile]::OpenRead($archive)

foreach($entry in $zip.Entries){
if ($filesToExtract -contains $entry.FullName){
$dst = [io.path]::combine($dstRoot, $entry.FullName)

if (Test-Path -Path $dst) { Remove-Item -Path $dst }

Write-Verbose $("Extract ==> {0}" -f @($dst))
[System.IO.Compression.ZipFileExtensions]::ExtractToFile($entry, $dst)
}
}
$zip.Dispose()

关于.net - Powershell [System.IO.Compression.ZipArchiveEntry] 不包含名为 'ExtractToFile' 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775744/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com