Script Powershell per i tipi di file di inventario

Ho scritto uno script per le unità di inventario per tipi di file specifici. (AVI, MPG, MP3, ecc …)

Posso get lo script di base per funzionare usando solo un'unità e un'estensione impostata, ma vorrei veramente leggere le estensioni da un file e le unità da un file.

$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 } } 

Quando cerco sto solo trovare gli script dei drive spacepace.

Qualsiasi guida sarebbe apprezzata.

2 Solutions collect form web for “Script Powershell per i tipi di file di inventario”

Messy ma sono andato con WMI per get le unità e poi looped attraverso basati su estensioni uniche:

 $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 } } 

La chiamata WMI riporterà solo unità locali.

Qualcosa di simile dovrebbe fare il trucco … Si prega di notare: -Qual cosa sull'esportzione-Csv bit.

Tutti i file CSV verranno salvati in C: \ temp in questo esempio.

 $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 } } 

Dove Drives.txt ha una lettera di unità per row

 C D E [...] 

E Extensions.txt ha un'estensione per row.

 mp3 mpg avi [...] 
Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.