ninnuzz
Goto Top

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

Content-ID: 668223

Url: https://administrator.de/contentid/668223

Printed on: December 2, 2024 at 20:12 o'clock

cse
cse Sep 18, 2024 at 11:40:57 (UTC)
Goto Top
copilot
Michi91
Michi91 Sep 18, 2024 updated at 11:41:51 (UTC)
Goto Top
Hey,
bei solch einer simplen Aufgabe hilft sicherlich die KI weiter face-smile

# 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!
cse
cse Sep 18, 2024 at 11:42:37 (UTC)
Goto Top
Edit: 23 Sekunden zu spät. verdammt!

hehe
ninnuzz
ninnuzz Sep 18, 2024 at 11:52:46 (UTC)
Goto Top
So cool!

Herzlichst danke. Probiere es gleich aus.
erikro
erikro Sep 18, 2024 at 11:55:03 (UTC)
Goto Top
Moin,

man macht das die KI kompliziert.

(get-childitem x:\woauchimmer -directory -recurse).count
(get-childitem x:\woauchimmer -file -recurse).count

Mehr braucht man nicht. face-wink

Liebe Grüße

Erik
TK1987
TK1987 Sep 18, 2024 at 12:06:36 (UTC)
Goto Top
Zitat von @erikro:
Mehr braucht man nicht. face-wink
Oder noch kürzer face-wink ...
get-childitem x:\woauchimmer -recurse | group {$_.GetType()}

Gruß Thomas
150704
150704 Sep 18, 2024 updated at 12:15:30 (UTC)
Goto Top
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  
TK1987
TK1987 Sep 18, 2024 at 12:34:35 (UTC)
Goto Top
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.

Gruß Thomas
150704
150704 Sep 18, 2024 updated at 12:59:44 (UTC)
Goto Top
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.
TK1987
TK1987 Sep 18, 2024 at 13:09:49 (UTC)
Goto Top
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.
150704
150704 Sep 18, 2024 updated at 13:46:53 (UTC)
Goto Top
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 ...
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