Powershell 使用ConvertToDateME变量创建CSV

Powershell 使用ConvertToDateME变量创建CSV,powershell,csv,Powershell,Csv,我可以从下面的代码创建一个CSV,但是它连续几天都没有给出“系统启动时间”的详细信息 它显示小时和分钟没问题,但不是在天之前给出一个数字,而是打印出单词days Server Last Rebooted System Up Time Srv1 25/07/2018 20:49 Days 12 Hours 37 Minutes PC1 04/02/2019 15:55 Days 17 Hours 31 Minutes 预期结果: Server Last Reboote

我可以从下面的代码创建一个CSV,但是它连续几天都没有给出“系统启动时间”的详细信息

它显示小时和分钟没问题,但不是在天之前给出一个数字,而是打印出单词days

Server Last Rebooted System Up Time Srv1 25/07/2018 20:49 Days 12 Hours 37 Minutes PC1 04/02/2019 15:55 Days 17 Hours 31 Minutes 预期结果:

Server Last Rebooted System Up Time Srv1 25/07/2018 20:49 200 Days 12 Hours 37 Minutes PC1 04/02/2019 15:55 9 Days 17 Hours 31 Minutes 服务器上次重新启动系统的启动时间 2018年7月25日Srv1 20:49 200天12小时37分钟 PC1 2019年2月04日15:55 9天17小时31分钟
尝试将此代码用作基本示例,并根据您的需要重新编写:

    $servers = 'COREDC01','COREDC02'
    $currentDT = Get-Date

    foreach ($i in $servers) {
        $BootTime = (Get-CimInstance -ComputerName $i -ClassName Win32_OperatingSystem).LastBootupTime
        $uptime = $currentDT - $BootTime

        Write-Output `
            -InputObject "Uptime for Server $i -
            Days:$($uptime.Days),
            Hours:$($uptime.Hours),
            Minutes:$($uptime.Minutes),
            Seconds:$($uptime.Seconds)
        "
    }

奇怪的是,这就是解决办法

$Boot| Select-Object @{Name="Server";Expression={$SF}}, 
@{Name="Last  Rebooted";Expression={$($boot)}}, 
@{Name="System Up Time";Expression= {$Boot.$uptime.Seconds +""+ $uptime.Days + "  Days " + $uptime.Hours + " Hours " +  $uptime.Minutes + " Minutes "}}

| Export-CSv $Res2 -NoClobber -NoTypeInformation -Append 
我必须添加$uptime.seconds以不打印任何内容,然后添加一个空白“”以正确打印。看到结果


尝试以下CIMInstance,因为它直接输出到DateTime,所以您不需要进行任何转换:(获取CIMInstance-类名Win32_OperatingSystem)。LastBootupTime您可以创建月、日、分钟等变量,并使用上面附加的.Day、.Minute等感谢,但是我会用它来获取远程机器的详细信息吗?
$.$uptime.Days
->
$uptime.Days
是的,我想是的,但是它什么也没有显示。在专栏中,我有点困惑为什么会发生这种情况。同样的结果,即使有代码建议,它似乎没有看到天的值,其他一切都很好。这很奇怪,因为我的代码适用于我:PS C:\Windows\system32>C:\Temp\Untitled2.ps1服务器COREDC01的正常运行时间-天:0,小时:0,分钟:14,秒:49服务器COREDC02的正常运行时间-天:0,小时:0,分钟:15,秒:0您是否在检查各种操作系统版本?现在想知道这是否是PowerShell版本的问题,v2和较新版本之间有什么不同。我运行5.1 ps,我使用vscode查看变量,它包含天数,但无法将其打印到电子表格中。我和你一样困惑。我上面的代码是否正确地打印到PS控制台?也可以在新的/干净的会话中尝试它吗?
$Boot| Select-Object @{Name="Server";Expression={$SF}}, 
@{Name="Last  Rebooted";Expression={$($boot)}}, 
@{Name="System Up Time";Expression= {$Boot.$uptime.Seconds +""+ $uptime.Days + "  Days " + $uptime.Hours + " Hours " +  $uptime.Minutes + " Minutes "}}

| Export-CSv $Res2 -NoClobber -NoTypeInformation -Append