使用ConvertToDateTme变量创建CSV

时间:2019-02-12 09:32:40

标签: 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

我试图用括号将$Uptime变量括起来,但无济于事。我也尝试过$_.Days来获取信息,但没有任何运气。

$Path = "C:\Temp\Manual_Servers"
$Tx = "\Servers.txt"
$CS = "\Res.csv"
$File = $Path + $tx
$Server = GC $File
$Np = "\Res.txt"
$Res = $Path + $Np
$Res2 = $Path + $CS

function Uptime2 {
    $Server | ForEach-Object {
        $SF = $_
        $os = Get-WmiObject Win32_OperatingSystem -ComputerName $_ -ErrorAction SilentlyContinue
        $uptime = (Get-Date) - $os.ConvertToDateTime($os.LastBootUpTime)
        $OS |
            Select-Object @{Name="Server";Expression={$SF}},
                @{Name="Last Rebooted";Expression={($_.ConvertToDateTime($os.LastBootUpTime)).DateTime}},
                @{Name="System Up Time";Expression={$_.$uptime.Days + "Days " + $uptime.Hours + " Hours " + $uptime.Minutes + " Minutes" }} |
           Export-Csv $Res2 -NoClobber -NoTypeInformation -Append
    }
}
Uptime2

所需结果:

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

2 个答案:

答案 0 :(得分:1)

尝试使用此代码作为基本示例,并根据需要对其进行重新设计:

    $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)
        "
    }

答案 1 :(得分:0)

Bizzarely这是解决方案;

$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以不打印任何内容,然后添加空白“”以使其正确打印出来。查看结果;

enter image description here