Необходимо указать абсолютный путь к файлу (файлам) для метода OpenRead
(без подстановочных знаков). Относительные пути интерпретируются как относительные (. NET) к текущему рабочему каталогу, но это может отличаться от текущего пути для PowerShell.
Я также рекомендую использовать командлет Join-Path
для объединения путь вывода с именем файла, чтобы вы не пропустили обратную косую черту или не добавили слишком много из них.
Примерно так:
$Path = "\\fas270_ctrl1\Cifs\INP_OUT_DIAS_PROXY_FILES"
$descriptions = "*ACC*.FAO"
$Filter = $descriptions
$OutPath = 'C:\results'
# make sure the output path exists and if not, create it
if (!(Test-Path -Path $OutPath -PathType Container)) {
$null = New-Item -Path $OutPath -ItemType Directory
}
Add-Type -AssemblyName System.IO.Compression.FileSystem
foreach ($file in (Get-ChildItem -Path $Path -Filter '*ACC*.zip' -File)) { # you may want to add switch -Recurse
$zip = [System.IO.Compression.ZipFile]::OpenRead($file.FullName)
$zip.Entries | Where-Object { $_.Name -like $Filter } | ForEach-Object {
$fileOut = Join-Path -Path $OutPath -ChildPath $_.Name
[System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $fileOut, $true)
}
$zip.Dispose()
}
Надеюсь, это поможет