繁体   English   中英

如何获取每个登录用户状态详细信息的状态

[英]How to get the status each logged in user status details

$dat = query user /server:$SERVER

该查询提供以下数据

USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
>vm82958               console             1  Active       1:28  2/9/2018    9:18 AM
adminhmc                                  2  Disc         1:28  2/13/2018 10:25 AM
nn82543                                   3  Disc         2:50  2/13/2018 3:07 PM    

我想获取每个独立的用户详细信息,例如STATEUSERNAMEID详细信息。 我尝试下面的代码,但它没有提供任何数据

foreach($proc in $dat) {
    $proc.STATE  # This is not working  this command not giving any data.
    $proc.ID # This is not working  this command not giving any data.
}

请帮我。

$dat.GetType()的结果是:

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

这与StackOverflow的帖子非常相似,但是您的数据中包含空白字段。

一种解决方案是首先解决这个问题。 下面的示例,但这可能会破坏与您的示例非常不同的给定数据。 有关更健壮和完整的解决方案,请参阅Matt的评论

# replace 20 spaces or more with TWO commas, because it signifies a missing field
$dat2 = $dat.Trim() -replace '\s{20,}', ',,'

# replace 2 spaces or more with a single comma
$datTable = $dat2.Trim() -replace '\s{2,}', ',,'

foreach($proc in $datTable) {
    $proc.STATE
    $proc.ID
}

另一个选择是将固定的Columns与string.Insert一起使用,如下所示:

$content = quser /server:$SERVER    
$columns = 14,42,46,54,65 | Sort -Descending
$Delimiter = ','

$dat = $content | % {
  $line = $_
  $columns | % {
    $line = $line.Insert($_, $Delimiter)
  }
  $line -replace '\s'
} |
ConvertFrom-Csv -Delimiter $Delimiter 

接着:

foreach($proc in $dat) {
    $proc.STATE          
    $proc.ID # Will show the relevant Data
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM