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.

  • Powershell ForEach-Object: imansible bind il parametro
  • Cercando di estrarre un file con Powershell
  • La scheda di networking di Windows 8.1 Hyper-V è impostata su pubblico e non salva come privato
  • Copia di elenchi di file attraverso PowerShell
  • PowerShell: esport GPO in un file di text
  • Problemi di Exchange delle cassette postali di accesso ultimo
  • Powershell Set-Acl non riesce
  • Alla ricerca di uno script per ripristinare un backup del server SQL
  • 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.