Powershell Foreach循环输出DateTime对象以及其他详细信息。
我很难让PowershellPowershell Foreach循环输出DateTime对象以及其他详细信息。,powershell,datetime,foreach,Powershell,Datetime,Foreach,我很难让PowershellForeach循环输出[DateTime]对象,以便在重新启动后将其与另一个对象进行比较 下面的示例脚本,我希望创建一个哈希表来存储Computername+上次重新启动时间,然后添加一个当前重新启动时间,以便可以比较重新启动时间 $servers = GC D:\Scripts\list1.txt foreach($server in $servers){ Try{ $operatingSystem = Get-WmiObject Win32_Operat
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
-编辑时,上述脚本将以下内容作为字符串输出。我正在尝试获取TypeName:System.DateTime
对象的集合
Server1 last rebooted 10/24/2015 11:39:34
Server2 last rebooted 10/22/2015 01:34:33
所以我四处摸索,得到了这句话,基本上脚本变成了“重新启动计算机,直到一切都是最新的。”
我尝试使用哈希表或PSCustomObject进行计算的原因
不能两者兼而有之
$servers = Get-Content "D:\Scripts\list1.txt"
$servers | ForEach-Object{
$props = @{}
$props.Server = $_
Try{
$operatingSystem = Get-WmiObject Win32_OperatingSystem -ComputerName $props.Server
$props.LastBootTime = [Management.ManagementDateTimeConverter]::ToDateTime($operatingSystem.LastBootUpTime)
} Catch {
$err = $_.Exception.GetType().FullName
$props.LastBootTime = $null
Write-Warning "$err on $($props.Server)"
}#end catch
New-Object -TypeName psobject -Property $props
}#End foreach
更改循环结构,因为如果需要,输出更容易通过管道传输。为在try/catch块之后转换为对象的每个循环过程构建哈希表。未经测试,但应该有效 虽然我相信我们可以通过测试来解决问题,但如果你能告诉我们什么是错误的,以及你希望看到什么,那就容易多了。啊,很好的一点,添加了一些例子。截止日期比他们在镜子里看到的要近!如果你想输出datetime对象,那么不要把它包装成一个字符串。当然,我会有没有服务器引用的日期和时间。我尝试使用哈希表或PSCustomObject进行计算的原因。
$servers = Get-Content "D:\Scripts\list1.txt"
$servers | ForEach-Object{
$props = @{}
$props.Server = $_
Try{
$operatingSystem = Get-WmiObject Win32_OperatingSystem -ComputerName $props.Server
$props.LastBootTime = [Management.ManagementDateTimeConverter]::ToDateTime($operatingSystem.LastBootUpTime)
} Catch {
$err = $_.Exception.GetType().FullName
$props.LastBootTime = $null
Write-Warning "$err on $($props.Server)"
}#end catch
New-Object -TypeName psobject -Property $props
}#End foreach