Zum Inhalt springen

Powershell Typkonvertierung


Empfohlene Beiträge

Halli Hallo,

ich habe in meiner Firma ein kleines Script geschrieben, welches bei 127 Clients nach einer lokalen Datenbank sucht und mir alle Clients, wo die Datenbank >2 GB ist per Mail zuschickt.

Funktioniert auch super, nur mit einer kleinen Einschränkung

Einer von den 127 Clients bringt jedesmal einen Fehler, dass er den Typ "System.Object" nicht in "System.Double" konvertieren kann (siehe Fehlermeldung) und somit wir dieser Client  auch nicht untersucht.

Fehler:

Der Wert "System.Object[]" vom Typ "System.Object[]" kann nicht in den Typ "System.Double" konvertiert werden.
Bei C:\Users\xxxxxxxx\Desktop\test.ps1:26 Zeichen:21
+         if([double]$object <<<<  = Get-ChildItem  $pfad -Recurse -Force -ErrorAction SilentlyContinue | Where-Object {$_.Name -like "*$dateiname*"} |  select-object -expandproperty length )
    + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
    + FullyQualifiedErrorId : RuntimeException

Wie die Fehlermeldung schon sagt liegt der Fehler in Zeile 26, hier noch der original Codeauschnitt:

if([double]$object = Get-ChildItem  $pfad -Recurse -Force -ErrorAction SilentlyContinue | Where-Object {$_.Name -like "*$dateiname*"} |  select-object -expandproperty length ) 

Könnt ihr mir helfen und mir sagen wieso das bei 126 Clients klappt und bei genau einem nicht?:D

Danke im Voraus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das scheint kein rein syntaktisches Problem zu sein, sonst würden die Anderen Clients die gleiche Fehlermeldung liefern. Es liegt also die Vermutung nahe, dass bei diesem einen Client das gelieferte Objekt ein Anderes Objekt ist als du erwartest und welches eben nicht ohne weiteres explizit in Double konvertiert werden kann. Mir ist jetzt nicht wirklich klar, wie du per Powershell die Clients untersuchst (PowershellRemote? RemoteExecution?) - ich tippe daher einfach mal, dass auf deinem Ziel Client eine Andere Powershell Version installiert ist als auf den übrigen Clients, wo Get-Childitem dir noch einen ganz anderen Objekt-Typ liefert als in Anderen Powershell Versionen. Untersuch mal das Objekt genauer, was dir mit Get-Childitem auf diesem Client geliefert wird ohne es direkt in double zu konvertieren und vergleich das mal mit den gelieferten Objekten der Anderen Clients.

Bearbeitet von Uhu
Link zu diesem Kommentar
Auf anderen Seiten teilen

Problem gefunden, danke das du mich auf ne Idee gebracht hast.

Hab mir die Größe einfach mal ohne Typkonvertierung anzeigen lassen... hier das Ergebnis:

ProblemPC:

Length : 1103298560


Length : 631439360

VergleichsPC:

Length : 1103298560
 

Der Client gibt mir 2 Werte zurück. Hab mir den Client angeguckt und in dem Ordner den ich untersuche habe ich einen Backupordner gefunden, wo eine andere mdf-Datei mit dem selbem Namen liegt.

 

Vielen Dank für deine Hilfe :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...