【发布时间】:2022-02-13 04:21:29
【问题描述】:
我在尝试调用脚本的函数时遇到问题,该脚本用于在我的 PC 上的文件夹中构建 zip 文件列表。我需要创建的最后一个 CSV 是一个包含未压缩大小的 zip 文件列表。这是我到目前为止的内容(从几篇文章编译而来):
获取未压缩大小的函数:
function Get-UncompressedZipFileSize {
param (
$Path
)
$shell = New-Object -ComObject shell.application
$zip = $shell.NameSpace($Path)
$size = 0
foreach ($item in $zip.items()) {
if ($item.IsFolder) {
$size += Get-UncompressedZipFileSize -Path $item.Path
} else {
$size += $item.size
}
}
[System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$shell) | Out-Null
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
return $size
}
这是我的数组创建:
$arr = @()
gci C:\zips -recurse | ? {$_.PSIsContainer -eq $False} | % {
$obj = New-Object PSObject
$obj | Add-Member NoteProperty Name $_.Name
$obj | Add-Member NoteProperty FullPath $_.FullName
$arr += $obj
}
$arr | Export-CSV -notypeinformation c:\zips
我坚持在我的数组中创建一个新成员对象,该对象将调用 get-uncompressedzipfilesize 函数将该大小作为我的 zip 中的新列传递回数组。这样的事情有可能吗?
【问题讨论】:
-
您使用的是哪个 PowerShell 版本?
-
嘿,我用的是5.1版
标签: powershell