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 Mar 06, 2015 um 09:57:08 Uhr
Formatierung hinzugefügt.

Content-Key: 265418

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

Printed on: April 16, 2024 at 17:04 o'clock

Member: colinardo
Solution colinardo Mar 06, 2015, updated at Mar 09, 2015 at 09:54:32 (UTC)
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
Member: colinardo
colinardo Mar 07, 2015 updated at 17:19:34 (UTC)
Goto Top
Gibt''s dazu noch Verständnisprobleme ? Fragen kost nix face-wink

Grüße Uwe
Member: neueradmuser
neueradmuser Mar 07, 2015 at 17:27:28 (UTC)
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ß