我尝试使用WMI来获取计算机登录会话的开始时间:
$starttimes = Get-WmiObject Win32_LogonSession -ComputerName HM-ITS-KLP |
select starttime
这给我的日期格式为:
20170120075444.819609+000 (yyyymmddhhmmss.??????+???)
使用String.ToCharArray()
方法我设法将字符串转换为数组,以便我可以更好地重组它,尽管在这种格式中它不会接受这样的:
方法调用失败,因为[Selected.System.Management.ManagementObject]不包含名为&ToCharArray'的方法。
整个代码如下:
$starttimes = Get-WmiObject Win32_LogonSession -ComputerName HM-ITS-KLP |
select StartTime
foreach ($line in $starttimes) {
$dateArray = $line.ToCharArray()
$time = $dateArray[8..9] + ":" + $dateArray[10..11] + ":" + $dateArray[12..13]
$date = $dateArray[6..7] + "/" + $dateArray[4..5] + "/" + $dateArray[0..3]
$LoginTimeAndDate1 = $time + " " + $date
$LoginTimeAndDate = $LoginTimeAndDate1 -join ""
}
答案 0 :(得分:5)
您忘记展开“starttime”属性。尝试更改为:
foreach ( $line in $starttimes){
$dateArray = $line.starttime.toCharArray()
或者这个:
foreach ( $line in $starttimes.starttime){
$dateArray = $line.toCharArray()
或者这个:
$starttimes = Get-WMIObject Win32_LogonSession | select -Expand starttime
foreach ( $line in $starttimes){
答案 1 :(得分:1)
试试这个:
Get-WmiObject Win32_LogonSession -ComputerName "HM-ITS-KLP" | select @{N='starttime';E={$_.ConvertToDateTime($_.starttime)}}