1

我正在使用 Import-Excel 模块将 Excel 文档导入到 powershell 脚本。导入效果很好,但日期列的格式非常奇怪。Excel 表中的日期和时间格式如下:yyyy-mm-dd hh:mm (2020-09-01 04:03) 但导入的数据如下所示:43965,1672916667。

我试图像这样将 [DateTime] 添加到变量中: "Senast ansluten" = [DateTime]$ExcelLok.'Senast ansluten' 但后来我得到了错误 Cannot convert value "44075.3451851852" to type "System.DateTime". Error: "String was not recognized as a valid DateTime."

如何指定格式以便正确读取?

$ImportExcel = Import-Excel -Path 'C:\Temp\Powershell scripts\Test\PingFastaIP\Fasta IP-nummer.xlsm' -WorksheetName ADM_UTB

ForEach ($ExcelLok in $ImportExcel){
[PSCustomObject]@{
        "IP address" = $ExcelLok.IP
        "Lokation" = $ExcelLok.Lok
        "Ping status" = $ExcelLok.'Ping status'
        "Senast ansluten" = [DateTime]$ExcelLok.'Senast ansluten'
} | Format-Table -Property `
        @{Name='Lokation';Expression={ $ExcelLok.Lok };align='left';width=15},
        @{Name='IP address';Expression={ $ExcelLok.IP };align='left';width=15},
        @{Name='Ping status';Expression={ $ExcelLok.'Ping status' };align='left';width=20},
        @{Name='Senast ansluten';Expression={ $ExcelLok.'Senast ansluten' }} 
        
}
4

2 回答 2

2

尝试这个: $ImportExcel = Import-Excel -Path 'C:\Temp\Powershell scripts\Test\PingFastaIP\Fasta IP-nummer.xlsm' -WorksheetName ADM_UTB -AsDate 'DateColumn'

于 2021-06-10T22:19:47.900 回答
0

多亏了 mclayton,解决方案变成了这样:

$ImportExcel = Import-Excel -Path 'C:\Temp\Powershell scripts\Test\PingFastaIP\Fasta IP-nummer.xlsm' -WorksheetName ADM_UTB

ForEach ($ExcelLok in $ImportExcel){
[PSCustomObject]@{
        "IP address" = $ExcelLok.IP
        "Lokation" = $ExcelLok.Lok
        "Ping status" = $ExcelLok.'Ping status'
        "Senast ansluten" = [DateTime]::FromOADate($ExcelLok.'Senast ansluten')
} | Format-Table -Property `
        @{Name='Lokation';Expression={ $ExcelLok.Lok };align='left';width=15},
        @{Name='IP address';Expression={ $ExcelLok.IP };align='left';width=15},
        @{Name='Ping status';Expression={ $ExcelLok.'Ping status' };align='left';width=20},
        @{Name='Senast ansluten';Expression={ [DateTime]::FromOADate($ExcelLok.'Senast ansluten') }} 
        
}
于 2020-09-15T10:22:27.930 回答