neueradmuser
Goto Top

Powershell - Befehle kombinieren und schachteln mit mehreren Variabeln

Hallo,
ich habe mir gestern Abend unten stehenden Code in Powershell "zusammengebaut" um die Objekte in 10 Ordnern zu zählen welche auf 2 Server verteilt sind.
Funktional ist das ganze, aber jenseits von gut und schön... ich bekomme irgendwie die get-child Abfrage nicht kombiniert/geschachtelt in einen Befehl und den Befehl für die Ausgabe (write-host) finde ich persönlich zu lang/unübersichtlich...

habt ihr Anregungen wie man es besser machen kann?
$list1 = (get-childitem \\server1\ordner1\DfsrPrivate\ConflictAndDeleted | measure-object ).count
$list2 = (get-childitem \\server1\ordner2\DfsrPrivate\ConflictAndDeleted | measure-object ).count
$list3 = (get-childitem \\server1\ordner3\DfsrPrivate\ConflictAndDeleted | measure-object ).count
$list4 = (get-childitem \\server1\ordner4\DfsrPrivate\ConflictAndDeleted | measure-object ).count
$list5 = (get-childitem \\server1\ordner5\DfsrPrivate\ConflictAndDeleted | measure-object ).count
$list6 = (get-childitem \\server2\ordner1\DfsrPrivate\ConflictAndDeleted | measure-object ).count
$list7 = (get-childitem \\server2\ordner2\DfsrPrivate\ConflictAndDeleted | measure-object ).count
$list8 = (get-childitem \\server2\ordner3\DfsrPrivate\ConflictAndDeleted | measure-object ).count
$list9 = (get-childitem \\server2\ordner4\DfsrPrivate\ConflictAndDeleted | measure-object ).count
$list10 = (get-childitem \\server2\ordner5\DfsrPrivate\ConflictAndDeleted | measure-object ).count

write-host Server1: $list1,"Objekte in Ordner1"([System.Environment]::NewLine)Server1: $list2,"Objekte in Ordner2"([System.Environment]::NewLine)Server1: $list3,"Objekte in Ordner3"([System.Environment]::NewLine)Server1: $list4,"Objekt in Ordner4"([System.Environment]::NewLine)Server1: $list5,"Objekte in Ordner5"([System.Environment]::NewLine)Server2: $list6,"Objekte in Ordner1"([System.Environment]::NewLine)Server2: $list7,"Objekte in Ordner2"([System.Environment]::NewLine)Server2: $list8,"Objekte in Ordner3"([System.Environment]::NewLine)Server2: $list9,"Objekte in Ordner4"([System.Environment]::NewLine)Server2: $list10,"Objekte in Ordner5"  
Gruß & danke für Input
Kommentar vom Moderator Dani am 06.03.2015 um 10:57:08 Uhr
Formatierung hinzugefügt.

Content-ID: 265418

Url: https://administrator.de/forum/powershell-befehle-kombinieren-und-schachteln-mit-mehreren-variabeln-265418.html

Ausgedruckt am: 22.12.2024 um 12:12 Uhr

colinardo
Lösung colinardo 06.03.2015, aktualisiert am 09.03.2015 um 10:54:32 Uhr
Goto Top
Haloo nightwishler,
zB. so in einem schönen Custom-Objekt zusammengefasst, mit dem du später effektiv arbeiten kannst (vor allem wenn es später mal um einen CSV-Export geht).
# Array der Ordner
$folders = @(
'\\server1\ordner1\DfsrPrivate\ConflictAndDeleted',  
'\\server1\ordner2\DfsrPrivate\ConflictAndDeleted',  
'\\server1\ordner3\DfsrPrivate\ConflictAndDeleted',  
'\\server1\ordner4\DfsrPrivate\ConflictAndDeleted',  
'\\server1\ordner5\DfsrPrivate\ConflictAndDeleted',  
'\\server2\ordner1\DfsrPrivate\ConflictAndDeleted',  
'\\server2\ordner2\DfsrPrivate\ConflictAndDeleted',  
'\\server2\ordner3\DfsrPrivate\ConflictAndDeleted',  
'\\server2\ordner4\DfsrPrivate\ConflictAndDeleted',  
'\\server2\ordner5\DfsrPrivate\ConflictAndDeleted'  
)
# leeres Array erzeugen (enthält zum Schluss alle Daten)
$list = @()
# Für jeden Ordner ....
$folders | %{
    # custom Object mit den Daten für jeden Ordner erstellen und an das Array anhängen
    $list += New-Object PSObject -Property @{"Server"=($_.Split("\")[2]);"Ordner"=$_;"Objekte"=(gci $_ | measure).count}  
}
# Daten als Tabelle formatiert ausgeben
$list | ft -AutoSize
Die Redundanten Strings der Ordner könnte man natürlich auch noch eliminieren wenn man hier mit einem Zähler arbeitet, aber ich denke vermutlich nicht das deine Ordner in der Realität Ordner1-5 benannt sind. face-wink

Man kann natürlich auch jeweils separate Arrays für Server und Pfade erstellen, wenn die Pfade auf beiden Servern immer gleich sind. Dann spart man sich ebenfalls ein paar Zeilen, und man iteriert über das Server- und Pfad-Array verschachtelt.

Grüße Uwe
colinardo
colinardo 07.03.2015 aktualisiert um 18:19:34 Uhr
Goto Top
Gibt''s dazu noch Verständnisprobleme ? Fragen kost nix face-wink

Grüße Uwe
neueradmuser
neueradmuser 07.03.2015 um 18:27:28 Uhr
Goto Top
hi,
ich denke nicht... über die Arrays bin ich auch gestolpert, habs aber nicht zusammenbekommen, und ich brauchte an dem abend eine quick&dirty lösung ;)

vom Verständnis her isses logisch... auch wenn ich 1-2 dinge noch nachgucken muss...
aber ohne selber aufbröseln bleibts nich im kopf ... werde es vermutlich montag einbauen und dann gegebenenfalls rückfragen stellen

danke schonmal
Gruß