Foreach循环输出DateTime对象加上其他细节。

时间:2015-10-24 23:15:09

标签: powershell datetime foreach

我无法获取Powershell Foreach循环来输出[DateTime]对象,因此我可以在重新启动后将其与其他对象进行比较。

下面的示例脚本,我想创建一个哈希表来存储Computername +上次重启时间,然后添加当前的重启时间,以便可以比较重启时间。

$servers = GC D:\Scripts\list1.txt

foreach($server in $servers){

 Try{
  $operatingSystem = Get-WmiObject Win32_OperatingSystem -ComputerName $server
  $current = [Management.ManagementDateTimeConverter]::ToDateTime($operatingSystem.LastBootUpTime)

  "$server last rebooted $current"
 }#end try

 Catch{
  $err = $_.Exception.GetType().FullName
  Write-Warning "$err on $($server)"}#end catch

}#End foreach

-Edit,上面的脚本将以下字符串输出。我正在尝试获取TypeName: System.DateTime个对象的集合。

Server1 last rebooted 10/24/2015 11:39:34
Server2 last rebooted 10/22/2015 01:34:33

所以我更多地探索并获得了这条线,基本上脚本变成了“重新启动计算机直到一切都是最新的。”

IF($current -gt ((Get-Date).AddHours(-6)))
{"Server reboot is current for $server"}ELSE{"Please check $server"}

1 个答案:

答案 0 :(得分:1)

  

我之所以尝试使用哈希表或PSCustomObject。

不能两者兼得!

let now = NSDate() // gettime
let calendar = NSCalendar.autoupdatingCurrentCalendar()
// If you want to know the hour in a particular time zone, set it here.
// For example, to get the time in Japan:
// calendar.timeZone = NSTimeZone(name: "Asia/Tokyo")!
// By default, the calendar uses the system time zone setting.
let hour = calendar.component(NSCalendarUnit.Hour, fromDate: now)
if hour == 23 {
    print("It is the appointed hour.")
}

更改循环结构,因为如果需要,输出更容易通过管道传输。为每个循环传递构建一个哈希表,该传递在try / catch块之后转换为一个对象。未经测试但应该工作。