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?
Gruß & danke für Input
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"
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
3 Kommentare
Neuester Kommentar
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).
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.
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
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
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