Ich habe ein PowerShell-Skript, das Garantieinformationen von einer API bezieht und sie in einer benutzerdefinierten WMI-Klasse speichert.Vergleichen Get-WmiObject (Datum) Ergebnisse
Ich bringe diese Daten dann in unser RMM-Tool, so dass es mit unserer PSA-Lösung synchronisiert wird und die Garantieenddaten für Erneuerungen automatisiert/aktualisiert werden.
Was ich zu der Zeit nicht berücksichtigt habe, war: mehrere Garantien mit denselben Eigenschaftenwerten. So macht mein Caveman-Skript das Ziehen von Werten where otherValue='specific text'
weitgehend unwirksam.
Also, die WMI-Klasse eine Instanz pro Garantie hat, mit den folgenden Eigenschaften:
ComputerName: SUMGAIZPC EndDate: DD/MM/YYYY ItemNumber: 000-0000 Model: PewterPro 2000 ServiceLevelDescription: When We Get To It ServiceProvider: LOL ServiceTag: 1FSD51L;K StartDate: DD/MM/YYYY
So gehämmert ich etwas in der Nähe this out:
Get-WmiObject -Namespace root\Namespace -Class Warranty_Info |
Where-Object ServiceLevelDescription -eq "How About Right Now" |
Select-Object -ExpandProperty EndDate
Get-WmiObject -Namespace root\Namespace -Class Warranty_Info |
Where-Object ServiceLevelDescritpion -eq "When We Get To It" |
Select-Object -ExpandProperty EndDate
Get-WmiObject -Namespace root\Namespace -Class Warranty_Info |
Where-Object ServiceLevelDescription -eq "You're Not Gonna Like It" |
Select-Object -ExpandProperty EndDate
Der Kicker ist, dass jeder Diese Befehle sind eigentlich Teil eines Skripts, das von unserem RMM-Tool (LabTech, für die vertrauten) ausgeführt wird und von ihrem PowerShell-Wrapper ausgeführt wird, sodass jeder Befehl einzeln ausgeführt wird und die Ergebnisse dann in einer Variablen namens %powershellresults%
gespeichert werden. Ich setze dann die Werte für die Datenfelder innerhalb des RMM-Tools als die entsprechenden %powershellresults%
.
Jetzt für das Problem. Manchmal wurde eine Garantie erneuert. Also, wenn ich die Informationen von der API bekomme, werden zwei Instanzen mit der gleichen ServiceLevelDescription
, aber zwei völlig verschiedene EndDate
Werte erstellt. Das gibt 12/15/2009 02/04/1974
an das Datenfeld statt nur 12/15/2009
zurück. Und da das Feld mit einem Datumsfeld in unserem PSA synchronisiert wird (nur das eine), brauche ich nur ein Datum.
Letztendlich muss ich alle Datenfelder (für jede unterschiedliche Art von Garantie) vergleichen, um zu bestimmen, welches Datum die große Zeit wird, aber das ist ein anderes Problem für einen anderen Tag.
Bei Bedarf kann ich alle/alle Skripte zur Verfügung stellen, die ich derzeit habe (etwa 5 oder 6).
Hallo, wenn du könntest, wie würdest du zwischen den Daten wählen, die du bekommst? Der älteste oder der neueste? – sodawillow
Was ist der Datentyp von 'EndDate'? Ist es 'DateTime' oder' String'? (Check mit '... |%' {$ _ GetType() Fullname..}) –
@AnsgarWiechers - es ist ein String ist aus der API kommt, aber es kommt als yyyy-MM-dd, so dass ich konvertieren es Datetime verwenden zu MM-TT-JJJJ. Ich werde überprüfen und sehen, ob es so gespeichert ist. #sodawillow - Ich suche das Neueste. – Steve