Powershell Get-ChildItem auf einem Share mag nicht wie es soll
Hallo in die Runde,
Ich versuche Daten zu erheben von einem Software Depot. Lokal mit meinem Testordner macht er alles, auf dem Share nicht.
Beim Test tausche ich Path mit PathShare aus.
Auf dem Share macht er genau NUR das erste Element der ObjectList, ab der 2ten klemmt es.
Hat einer eine Idee wieso?
Zugriff auf das Share ist gegeben.
Folgendes läuft ebenfall.
Würde das nur alles miteinander verheiraten. Die Namen aus der Datenbank und den Ordnernamen + Größe.
VG
Ich versuche Daten zu erheben von einem Software Depot. Lokal mit meinem Testordner macht er alles, auf dem Share nicht.
Beim Test tausche ich Path mit PathShare aus.
$Path = "D:\TestDepot\"
$PathShare = "\\<Servername>\Depot\"
$CustomObjectArray =@()
$SoftwarePackage = (Get-ObjectList -Filter '(&(objectCategory=Software))')
$SoftwarePackage.ObjectList | Select-Object -Property ID,Name | %{
$result = ((Get-ChildItem "$Path$($_.ID)" -recurse -force -ErrorAction SilentlyContinue | select Length | Measure-Object -Sum length).sum / 1MB)
if($result -ne 0){
write-host "Pfad: "$Path$($_.ID)" Name: $($_.Name) Größe: $result"
$CustomObjectArray += New-Object psobject -Property @{PaketID=$_.ID; Paketname=$_.Name; Groesse=$result}
}else
{
Write-Host "Kein Paket im Share"
}
}
$CustomObjectArray | Select-Object PaketID,PaketName,Groesse | export-csv -Path d:\export.csv -NoTypeInformation -UseCulture
Invoke-Expression 'D:\export.csv'
Auf dem Share macht er genau NUR das erste Element der ObjectList, ab der 2ten klemmt es.
Hat einer eine Idee wieso?
Zugriff auf das Share ist gegeben.
Folgendes läuft ebenfall.
$PathShare = "\\<Servername>\Depot\"
$Path = "D:\TestDepot\"
$result = ((Get-ChildItem "$PathShare" -force -ErrorAction SilentlyContinue ))
$result | %{
$zwischen = ((Get-ChildItem "$PathShare$($_.Name)" -recurse -force -ErrorAction SilentlyContinue | select Length | Measure-Object -Sum length).sum / 1MB)
Write-Host "Pfad: " "$PathShare$($_.Name)" "----- Größe:" $zwischen
}
Würde das nur alles miteinander verheiraten. Die Namen aus der Datenbank und den Ordnernamen + Größe.
VG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 367205
Url: https://administrator.de/forum/powershell-get-childitem-auf-einem-share-mag-nicht-wie-es-soll-367205.html
Ausgedruckt am: 17.04.2025 um 07:04 Uhr
7 Kommentare
Neuester Kommentar
Zitat von @H41mSh1C0R:
EDIT:
Lokal auf dem Server ausgeführt hat es nun knapp 4h gebraucht, das ist denke ich auch nicht mit einer langsamen Anbindung zu erklären. =)
EDIT:
Ich bin gerade dabei mir den Filter weiter anzupassen um die Anzahl der Läufe zu minimieren. Die Geschwindigkeit ist dennoch grottig.
Kein Wunder wenn du die alte grottig lahme Variante New-Object PSObject nutzt. [pscustomobject] ist wesentlich ressourcenschonender. Und die überall zwischengeschalteten selects sind auch überflüssig. Rekursives Enumerieren von Directories übers Netz ist bekanntlich lahm. Deine Ordnerstruktur kennt hier auch niemand.EDIT:
Lokal auf dem Server ausgeführt hat es nun knapp 4h gebraucht, das ist denke ich auch nicht mit einer langsamen Anbindung zu erklären. =)
EDIT:
Ich bin gerade dabei mir den Filter weiter anzupassen um die Anzahl der Läufe zu minimieren. Die Geschwindigkeit ist dennoch grottig.
Get-ObjectList
Keine Ahnung wie das Teil intern arbeitet, ist zumindest nicht im Standard-Lieferumfang der PS.Was mir noch aufgefallen ist:
W10 Client (PS 5.1)
Lauf fertig --> CSV erstellt --> Ausgabe korrekt
WS2012 (PS 4.0)
Lauf fertig --> CSV erstellt --> Ausgabe falsch
Ist der Diff zwischen den PS Versionen dafür verantwortlich?
Nö, dein -UseCulture ist daran schuld. Bei einer englischen Culture wird das Komma statt das Semikolon als Delimiter genutzt und das erkennt ein deutsch konfiguriertes Excel nun mal nicht "automatisch" als Delimiter W10 Client (PS 5.1)
Lauf fertig --> CSV erstellt --> Ausgabe korrekt
WS2012 (PS 4.0)
Lauf fertig --> CSV erstellt --> Ausgabe falsch
Ist der Diff zwischen den PS Versionen dafür verantwortlich?
Grüße Uwe
Tja du musst deine Zahlen mit Komma formatieren ist ja Standard das bei einem deutschen Excel das Komma und nicht der Punkt Dezimaltrenner ist ...
Beim direkt öffnen einer CSV ist Excel halt sehr penibel.
Anders wenn man Excel so öffnet und über den Textimport arbeitet, dort lassen sich beim Import solche Eigenschaften festlegen.
Beim direkt öffnen einer CSV ist Excel halt sehr penibel.
Anders wenn man Excel so öffnet und über den Textimport arbeitet, dort lassen sich beim Import solche Eigenschaften festlegen.