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

Ausgedruckt am: 23.11.2024 um 08:11 Uhr

cse
cse 18.09.2024 um 13:40:57 Uhr
Goto Top
copilot
Michi91
Michi91 18.09.2024 aktualisiert um 13:41:51 Uhr
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 18.09.2024 um 13:42:37 Uhr
Goto Top
Edit: 23 Sekunden zu spät. verdammt!

hehe
ninnuzz
ninnuzz 18.09.2024 um 13:52:46 Uhr
Goto Top
So cool!

Herzlichst danke. Probiere es gleich aus.
erikro
erikro 18.09.2024 um 13:55:03 Uhr
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 18.09.2024 um 14:06:36 Uhr
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 18.09.2024 aktualisiert um 14:15:30 Uhr
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 18.09.2024 um 14:34:35 Uhr
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 18.09.2024 aktualisiert um 14:59:44 Uhr
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 18.09.2024 um 15:09:49 Uhr
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 18.09.2024 aktualisiert um 15:46:53 Uhr
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