PowerShell Skript für Auswertung
Hallo zusammen
Ich brauche einen PowerShell-Skript in dem ich im Windows-Explorer in einem Ordner die Anzahl der Ordner und Unterordner und deren alle Dateien herausfinden kann.
Kann mir jemand helfen?
Danke und viele Grüsse
Ich brauche einen PowerShell-Skript in dem ich im Windows-Explorer in einem Ordner die Anzahl der Ordner und Unterordner und deren alle Dateien herausfinden kann.
Kann mir jemand helfen?
Danke und viele Grüsse
Please also mark the comments that contributed to the solution of the article
Content-ID: 668223
Url: https://administrator.de/contentid/668223
Printed on: December 2, 2024 at 20:12 o'clock
11 Comments
Latest comment
Hey,
bei solch einer simplen Aufgabe hilft sicherlich die KI weiter
Edit: 23 Sekunden zu spät. verdammt!
bei solch einer simplen Aufgabe hilft sicherlich die KI weiter
# Definiere den Ordnerpfad
$OrdnerPfad = "C:\Users\XX\Desktop"
# Holen die Anzahl der Ordner und Unterordner
$OrdnerAnzahl = (Get-ChildItem -Path $OrdnerPfad -Recurse -Directory).Count
# Holen die Anzahl der Dateien
$DateienAnzahl = (Get-ChildItem -Path $OrdnerPfad -Recurse -File).Count
# Ausgabe der Ergebnisse
Write-Host "Anzahl der Ordner und Unterordner: $OrdnerAnzahl"
Write-Host "Anzahl der Dateien: $DateienAnzahl"
Edit: 23 Sekunden zu spät. verdammt!
Oder noch kürzer ...
Gruß Thomas
get-childitem x:\woauchimmer -recurse | group {$_.GetType()}
Gruß Thomas
Wozu den ganzen zusätzlichen Kladeradatsch den Get-ChildItem abfragt mit abfragen wenn man den für eine simple Zählung eh nicht braucht ...
[IO.Directory]::GetFiles('X:\woauchimmer','*','AllDirectories').Count
[IO.Directory]::GetDirectories('x:\woauchimmer','*','AllDirectories').Count
Zitat von @150704:
Wozu den ganzen zusätzlichen Kladeradatsch den Get-ChildItem abfragt mit abfragen
Weil die Methoden der Directory-Klasse leider nicht unter allen Bedingungen funktionieren. Wenn du damit zum Beispiel eine ganze Partition abfragst, bricht er mit "Zugriff verweigert"-Meldungen ab, weil er auch versucht "$RECYCLE.BIN", "System Volume Information", usw. aufzulisten.Wozu den ganzen zusätzlichen Kladeradatsch den Get-ChildItem abfragt mit abfragen
Gruß Thomas
Naja da musst du bei Get-ChildItem auch Fehler ignorieren oder verwursten wenn Zugriffsrechte fehlen, Korrekte Ergebnisse liefern beide dann dann nicht wenn Zugriffsrechte fehlen, Fehler abfangen und mit Systemrechten abfragen ist dann angesagt.
Das wäre nur der Fall, wenn man auch versteckte und/oder system-ordner mit durchsuchen will, also mit Force-Parameter sucht. Ansonsten werden diese bei Get-ChildItem ja nicht berücksichtigt (was man i.d.R. auch gar nicht will). Besagte Ordner mit zu zählen macht ja eigentlich auch überhaupt keinen Sinn.
Bei den Methoden hast du aber leider keine Möglichkeit, Ordner auszuschließen. Du kannst Fehler natürlich mit Try-Catch abfangen, erhälst dann aber immer noch kein Ergebnis.
Bei den Methoden hast du aber leider keine Möglichkeit, Ordner auszuschließen. Du kannst Fehler natürlich mit Try-Catch abfangen, erhälst dann aber immer noch kein Ergebnis.
Zitat von @TK1987:
Bei den Methoden hast du aber leider keine Möglichkeit, Ordner auszuschließen. Du kannst Fehler natürlich mit Try-Catch abfangen, erhälst dann aber immer noch kein Ergebnis.
Backup Token rein geschmissen schon geht's, auch wenn lokale Berechtigungen es in Ordnern evt. normalerweise verhindern würden ...Bei den Methoden hast du aber leider keine Möglichkeit, Ordner auszuschließen. Du kannst Fehler natürlich mit Try-Catch abfangen, erhälst dann aber immer noch kein Ergebnis.
if (!(new-object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole(544)){
write-error "Skript muss elevated gestartet werden!" -Category PermissionDenied
return
}
Add-Type '[DllImport("ntdll.dll")] public static extern int RtlAdjustPrivilege(int Privilege, bool Enable, bool CurrentThread, ref bool EnabledOut);' -name rein -namespace lassmich
[void][lassmich.rein]::RtlAdjustPrivilege(17,1,0,[ref]0)
[IO.Directory]::GetFiles("D:\","*",'AllDirectories').Count
[IO.Directory]::GetDirectories("D:\","*",'AllDirectories').Count