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

M24*_*mit 1 arrays string powershell formatting

我正在尝试使用WMI来获取计算机登录会话的开始时间:

$starttimes = Get-WmiObject Win32_LogonSession -ComputerName HM-ITS-KLP |
              select starttime
Run Code Online (Sandbox Code Playgroud)

这给了我格式化为的日期:

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 ""
}
Run Code Online (Sandbox Code Playgroud)

Kir*_*kov 5

你忘了扩展"starttime"属性.尝试更改为:

foreach ( $line in $starttimes){
$dateArray = $line.starttime.toCharArray()
Run Code Online (Sandbox Code Playgroud)

或这个:

foreach ( $line in $starttimes.starttime){
$dateArray = $line.toCharArray()
Run Code Online (Sandbox Code Playgroud)

或这个:

$starttimes = Get-WMIObject Win32_LogonSession |  select -Expand starttime
foreach ( $line in $starttimes){
Run Code Online (Sandbox Code Playgroud)