PowerShell脚本库存文件types

我一直在编写一个脚本来清理特定文件types的驱动器。 (AVI,MPG,MP3等)

我可以让基本脚本只使用一组驱动器和扩展名,但我真的希望从文件读取扩展名,并从文件驱动器。

$dir = get-childitem z:\ –recurse ForEach ($item in $dir) { If ($item.extension –eq '.avi') { $item | select-object length,fullname,LastWriteTime | Export-CSV C:\temp\z-avi.csv –notypeinformation –append } } 

当我search我只find服务器drivespace脚本。

任何指导将不胜感激。

凌乱,但我与WMI去获取驱动器,然后根据独特的扩展循环:

 $computer = Get-ADcomputer ComputerName $drives = Get-WmiObject win32_volume -ComputerName $computer.DNSHostName | Where-Object {$_.DriveType -eq 3 -and $_.DriveLetter -ne $null -and $_.Label -ne "System Reserved"} Foreach ($drive in $drives) { $allfiles = gci $drive.DriveLetter -recurse | Select Name,FullName,Extension,Length,LastWriteTime $extensions = $allfiles | Select -Unique Extension Foreach ($ext in $extensions) { $filename = ($drive | Select -ExpandProperty DriveLetter -First 1)[0] + ($ext | Select -ExpandProperty Extension -First 1) $extensionfiles = $allfiles | Where-Object {$_.Extension -eq $ext.extension} #$extensionfiles.count $extensionfiles | Export-Csv C:\Temp\$filename.csv -Notypeinformation } } 

WMI调用将只带回本地驱动器。

像这样的东西应该做的伎俩…请注意 – 什么如果在出口CSV位。

在本例中,所有csv文件都将保存在C:\ temp下。

 $drives = Get-Content .\Drives.txt $extensions = Get-Content .\Extensions.txt foreach($drive in $drives) { $files = Get-ChildItem -Path "$drive`:\*" -Recurse -Include $($extensions | % { "*.$_" }) | where { $_.PSIsContainer -eq $false } $grouped = $files | Group-Object -Property Extension foreach ($group in $grouped) { $group | select -ExpandProperty Group | select Length, FullName, LastWriteTime | Export-Csv -Path "C:\Temp\$drive-$($group.Name.Replace('.','')).csv" -Append -NoTypeInformation -WhatIf } } 

Drives.txt每行有一个驱动器号

 C D E [...] 

而Extensions.txt每行有一个扩展。

 mp3 mpg avi [...]