Powershell 使用ConvertToDateME变量创建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 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分钟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
尝试将此代码用作基本示例,并根据您的需要重新编写:
$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