h41msh1c0r
Goto Top

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.

$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

Content-Key: 367205

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

Printed on: May 6, 2024 at 00:05 o'clock

Member: H41mSh1C0R
H41mSh1C0R Mar 07, 2018, updated at Mar 08, 2018 at 09:33:16 (UTC)
Goto Top
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.

Was mir noch aufgefallen ist:

W10 Client (PS 5.1)

Lauf fertig --> CSV erstellt --> Ausgabe korrekt

client

WS2012 (PS 4.0)

Lauf fertig --> CSV erstellt --> Ausgabe falsch

server

Ist der Diff zwischen den PS Versionen dafür verantwortlich?
Member: colinardo
Solution colinardo Mar 08, 2018 updated at 11:02:16 (UTC)
Goto Top
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.
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

client

WS2012 (PS 4.0)

Lauf fertig --> CSV erstellt --> Ausgabe falsch

server

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 face-smile.

Grüße Uwe
Member: H41mSh1C0R
H41mSh1C0R Mar 08, 2018 updated at 11:30:51 (UTC)
Goto Top
Mensch Uwe,

danke dir.

Das Get-ObjectList ist eines der cmdlets welches über die SOAP an unsere Verteillösung rangeht und dort Informationen herausholt.

[pscustomobject] geht schon schneller aber benötigt dennoch eine gefühlte Ewigkeit.

-UseCulture --> ;(

VG
Member: H41mSh1C0R
H41mSh1C0R Mar 08, 2018 at 15:57:31 (UTC)
Goto Top
Eine Frage hätte ich noch:

Nach dem Lauf:

aus dem quell csv


In Excel geöffnet (vorher hatte ich die "," noch mit ";" ausgetauscht =) ):

evtl komische formatierung


Wo kommen da mit einmal die ganzen Punkte her?
Im CSV waren die Zahlen noch korrekt.

VG
Member: colinardo
Solution colinardo Mar 08, 2018 updated at 16:22:16 (UTC)
Goto Top
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.
Member: H41mSh1C0R
H41mSh1C0R Mar 08, 2018 at 21:54:58 (UTC)
Goto Top
Hmmmm das werd ich nachher in 7h dann gleich mal ausprobieren. =)

Danke dir Uwe.

gn8
Member: H41mSh1C0R
H41mSh1C0R Mar 09, 2018 at 07:58:39 (UTC)
Goto Top
Guten Morgen Uwe,

der Import hat funktioniert.
Danke sehr.

VG und ein schönes Wochenende