gpt4 book ai didi

powershell - 通过powershell运行quser命令时,有什么方法可以摆脱字段

转载 作者:行者123 更新时间:2023-12-02 23:25:43 26 4
gpt4 key购买 nike

我正在从我的Powershell脚本之一运行quser命令,并显示

PS C:\ Users \ Arun> quser

USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
Arun console 1 Active 1+01:58 01/06/2016 14:01

有什么方法可以限制quser命令显示中的no.of字段。我想将此内容附加到电子邮件正文中,因此希望使其简短。

情况2:

具有多行的输出如下所示:
USERNAME     SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
Arun console 1 Active 1+01:58 01/06/2016 14:01
ABC 1 DISC 1+01:58 01/06/2016 14:01
DEF 1 Active 1+01:58 01/06/2016 14:01
GHI console 1 DISC 1+01:58 01/06/2016 14:01
IJK 1 DISC 1+01:58 01/06/2016 14:01

尝试了一种解决方案中提供的修改后的代码。
但是,当 session 名称为空值时,数据将向左移动。
USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
abc12367 2 Disc 2:08 5/20/2016 4:55 PM
def12367 3 Disc 4+03:55 6/9/2016 11:13 AM
>ghi12367 rdp-tcp#3 4 Active . 6/13/2016 10:00 AM
jkl12367 5 Disc 10 6/10/2016 3:54 PM
abc12367 7 Disc 2+23:56 5/19/2016 12:15 PM
mno12367 8 Disc 3+22:07 6/9/2016 4:52 PM
pqr12367 rdp-tcp#1 9 Active 12 6/9/2016 7:55 PM
stu12367 rdp-tcp#2 10 Active . 6/13/2016 10:35 AM
vwx12367 11 Disc 4:21 6/13/2016 10:38 AM

用于连续打印变量值的代码:
quser | select -Skip 1 | ForEach-Object { 
$current = $_ -split '\s+'
$i = 0;
$username = $current[$i++].Trim('>')
if ($current.Length -eq 7)
{
$sessionname = $current[$i++]
}
else
{
$sessionname = $null
}
$1=$current[$i++]
$2=$current[$i++]
$3=$current[$i++]
$4=$current[$i++]
$5=$current[$i++]
$6=$current[$i++]
$7=$current[$i++]


write-host $1
write-host $2
write-host $3
write-host $4
write-host $5
write-host $6
write-host $7

}

您能帮我解决这个问题吗?

最佳答案

您可以自己解析。您必须跳过第一个条目,对其进行迭代,然后使用\s+拆分字符串。现在,您可以使用数组索引访问所需的数据,这里是前两列的示例:

quser | select -Skip 1 | ForEach-Object { 
$current = $_ -split '\s+'
$username = $current[0].Trim('>')
$sessionname = $current[1]
}

对您的评论的回答:
quser | select -Skip 1 | ForEach-Object { 
$current = $_.Trim() -split '\s{2,}'
$i = 0;
$username = $current[$i++].Trim('>')
if ($current.Length -eq 6) # entry containing session name
{
$sessionname = $current[$i++]
}
else
{
$sessionname = $null
}

$id = $current[$i++]
$state = $current[$i++]
$idleTime = $current[$i++]
$LogonTime = $current[$i++]

return [PSCustomObject]@{
Username = $username
Sessionname = $sessionname
Id = $id
State = $state
IdleTime = $idleTime
LogonTime = $LogonTime
}
}

关于powershell - 通过powershell运行quser命令时,有什么方法可以摆脱字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37595645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com