PowerShell中的字符串到数组(没有分隔符)

时间:2017-01-23 14:10:51

标签: arrays string powershell formatting

我尝试使用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 ""
}

2 个答案:

答案 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)}}