2016-10-31 2 views

ответ

1

Вы можете получить содержимое Zip папки с помощью командлетов ниже

$ZipFile="Path" 
$AllFile=Get-ChildItem $ZipFile -Recurse -Filter '*.zip' 
$ObjArray = @() 
foreach ($item in $AllFile){ 
    $FullName=$item.FullName 
    $RawFiles = [IO.Compression.ZipFile]::OpenRead($FullName).Entries    
    $FullPathName=$FullName+"\"+"$RawFile" 
foreach($RawFile in $RawFiles) { 

    $object = New-Object -TypeName PSObject    
    $Object | Add-Member -MemberType NoteProperty -Name FileName -Value $RawFile.Name 
    $Object | Add-Member -MemberType NoteProperty -Name FullPath -Value $FullPathName    
    $Object | Add-Member -MemberType NoteProperty -Name CompressedLengthInKB -Value ($RawFile.CompressedLength/1KB).Tostring("00")    
    $Object | Add-Member -MemberType NoteProperty -Name UnCompressedLengthInKB -Value ($RawFile.Length/1KB).Tostring("00")    
    $Object | Add-Member -MemberType NoteProperty -Name FileExtn -Value ([System.IO.Path]::GetExtension($RawFile.FullName))    
    $Object | Add-Member -MemberType NoteProperty -Name ZipFileName -Value $zipfile    
    $ObjArray += $Object    
} 

} 

Убедитесь, что точка нетто 4,5 установлен перед запуском выше командлетов.

+0

Просто для проверки. Является ли «путь к папке Zip»: C: \ MyTemp или C: \ MyTemp \ foo.zip или C: \ MyTemp \ *. Zip? Я надеюсь, что это так же просто, как C: \ MyTemp, поскольку у меня есть сотни zip-файлов для поиска. – Underdog

+0

@Underdog Отредактирован сценарий. Теперь вы можете поставить c: \ mytemp в «путь». Он предоставит вам сведения обо всех zip-папках внутри c: \ mytemp – Venkatakrishnan

+0

Хотелось бы мне сообщить, что ваш образец работает, но он не выводит файл со списком имен ziparchive, где «Simulate =' 'true'" ». Я сделал несколько изменений и все еще делаю то, что у меня выше. – Underdog

Смежные вопросы