Ich habe ein Objekt mit einer Spalte, die ich von Unix-Zeit in eine "menschliche" Zeit konvertieren muss. Mein Objekt sieht so aus:Ändern der Unix-Zeitvariable in einem Array
PS C:\Windows\system32\WindowsPowerShell\v1.0> $AllAgents.agents[0..2] | Format-Table
last_scanned ip distro platform name uuid id
------------ -- ------ -------- ---- ---- --
1460167223 192.168.118.101 win-x86-64 WINDOWS COMPUTER-1 648f8f4f-8afa-029d-424f-fb27a8e345f8e2fdef184343058e 101
1460167223 192.168.118.145 win-x86-64 WINDOWS COMPUTER-2 0a33a831-fa47-1fdc-2c21-2a079c728a88bcf6186e275a9135 152
1460167223 192.168.118.26 win-x86-64 WINDOWS COMPUTER-3 738c0d3a-d2d5-447c-c671-b248180c3b3f75efb734be3d547d 359
Die Spalte "last_scanned" muss geändert werden. Ich habe den folgenden Code:
$Origin = New-Object -Type DateTime -ArgumentList 1970, 1, 1, 0, 0, 0, 0
$AllAgents.agents.last_scanned = $AllAgents.agents.last_scanned | ForEach-Object {
$_ = $Origin.AddSeconds($_)
$_
}
Ausführen dieser Schleife ergibt folgende Fehler:
The property 'last_scanned' cannot be found on this object. Verify that the property exists and can be set.
At U:\Powershell\Scripts\Nessus API - Get All Agents From a Group.ps1:55 char:1
+ $AllAgents.agents.last_scanned = $AllAgents.agents.last_scanned | For ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException
Ich bin nicht sicher, warum Powershell die last_scanned Eigenschaft denkt nicht existiert, weil es eindeutig da. Wie kann ich die Eigenschaft last_scanned in ein lesbareres Datum ändern und diesen Wert wieder in das Objekt einfügen?
Ich benutze PS 5.0. Ich versuche gerade Ihren Vorschlag und ich werde Sie wissen lassen, ob es funktioniert. – Tchotchke
das hat den Trick gemacht! Du und ich haben das Gleiche gemacht, aber du warst eine Stufe höher als ich (AllAgents.agents, während ich bei AllAgents.agents.last_scanned war). Kannst du erklären, warum dein Weg funktioniert, aber meiner nicht? – Tchotchke
Ok Ich dachte, es war nur eine Einschränkung mit früheren Versionen, aber es könnte einen anderen Grund geben, dass es nicht für diese Objekte funktioniert, im Grunde versucht man auf die '.last_scanned' Eigenschaft von' $ AllAgents.agents' zuzugreifen, aber '$ AllAgents.agents 'ist ein Array und hat keine Eigenschaft' .agents'. Das zu tun, was Sie getan haben, funktioniert tatsächlich mit den meisten Powershell-Objekten, daher vermutete ich, dass Sie eine ältere Version hatten, aber wenn Sie 5 verwenden, kann ich nur annehmen, dass es etwas Seltsames an den $ AllAgents-Objekten ist. Ich hoffe, das hilft. –