Powershell脚本按组织单位获取机器正常运行时间

时间:2018-08-09 16:06:07

标签: powershell

我发现了一些脚本,但没有任何工作方法并试图将它们组合在一起,却惨遭失败。我找不到任何可以解释如何使找到的人做我想要的东西的东西,所以这是我的尝试,但是没有用,所以我想知道是否有人可以帮助我使它工作? 我删除了标识域信息

Get-ADComputer -Filter { Name -like "*" } -SearchBase "OU=OU,DC=DC,DC=DC" |
    Select-Object -ExpandProperty Name |
    Sort-Object |
    Get-WmiObject  -Class Win32_OperatingSystem
$wmi.ConvertToDateTime($wmi.LocalDateTime) - $wmi.ConvertToDateTime($wmi.LastBootUpTime)

1 个答案:

答案 0 :(得分:2)

因此,您需要执行几个步骤:

  1. 获取机器列表

    $list = Get-ADComputer -Filter 'Name -like "*"' -SearchBase 'OU=Computers,DC=example,DC=com'
    
  2. 遍历列表

    $results = foreach ($pc in $list.Name)
    {
    
  3. 获取WMI信息

        $wmi = Get-WmiObject -ComputerName $pc -Class Win32_OperatingSystem
    
  4. 计算正常运行时间

        $uptime = $wmi.ConvertToDateTime($wmi.LocalDateTime) - $wmi.ConvertToDateTime($wmi.LastBootUpTime)
    
  5. 在您可以使用的集合中输出信息

        [pscustomobject]@{
            ComputerName = $pc
            Uptime       = $uptime.Hours
        }
    }
    

减去两个datetime对象将为您提供timespan,因此您需要弄清楚所需的信息(秒,分钟等)的粒度。此过程的最终结果是$results中带有ComputerNameUptime的对象数组。