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.

  • Utilizzando VBScript all'accesso per determinare se è installato powershell
  • Come posso eseguire uno script PowerShell durante il passaggio di specializzazione di una distribuzione WDS?
  • PowerShell: Convertire la string di IP separati da virgole per l'object IPAddress
  • Lo script PowerShell non salverà nel file quando si esegue utilizzando Task Scheduler; devo specificare un argomento specifico?
  • Adminstrator riceve PermissionDenied quando rilascia get-childitem in PowerShell
  • Esegui il command shell su Azure Linux VM da PowerShell
  • Cerchi di aggiungere il diritto "Accesso come servizio" ad un account tramite la row di command
  • Sembra che gli aggiornamenti descritti nella KB3057134 rendano PowerShell da avviare lentamente
  • 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.