我有一個從另一個系統導出的幾千個自定義PS對象的列表,並且所有這些自定義對象都在變量$queryResult
中。系統使用以毫秒爲單位的歷元時間格式的字段time
導出這些對象(例如:1492536777453 = 2017年4月18日星期二下午1:32:57 PM)。我需要將自定義對象中的所有這些time
字段更改爲人類可讀的時間。我已經有那個時代的時間轉換爲人類可讀的函數:修改許多自定義PowerShell對象
Function Convert-FromUnixDate ($UnixDate) {[timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddMilliSeconds($UnixDate))}
我也想通了,怎麼個個轉換,然而,這只是返回的時間(顯然)列表,我想不通如何更新實際的自定義對象:
foreach ($i in $queryResult.events.time){$humanReadable = @{};Convert-FromUnixDate $i}
我的問題是我想更新每個PS自定義對象的實際值,這樣,當我所有的對象導出到Excel文件的最終用戶,他們是可讀。非常感激你的幫助!
編輯
我忘了提及當我嘗試更新值時會發生什麼。我想下面這條語句:
$aqlQueryResult.events.starttime = Convert-FromUnixDate ($aqlQueryResult.events.starttime)
當我嘗試,我收到以下錯誤:
Cannot convert argument "value", with value: "System.Object[]", for
"AddMilliseconds" to type "System.Double": "Cannot convert the
"System.Object[]" value of type "System.Object[]" to type "System.Double"."
我理解,因爲我的轉換函數需要兩倍我收到這個錯誤,但是如何我是否可以改變它以期望正確的數據類型,或者找到另一種方法來做到這一點?
值使用'='設置。它在哪裏? (除了未使用的哈希表) –
你可以使用'Select-Object','Foreach-Object'和'New-Object'的組合,我想這可以在一個管道中完成。你已經擁有它的主要部分。 – sodawillow
謝謝@FrodeF,那是一個愚蠢的錯誤!我更新了我的帖子,以反映我在哪裏試過'=' – hbteibet