Powershell 使用Qwinsta导出已断开连接会话的简短列表

Powershell 使用Qwinsta导出已断开连接会话的简短列表,powershell,trim,Powershell,Trim,我需要在Powershell中创建一个应用程序,该应用程序将列出“已断开连接”的远程会话,它必须输出会话的用户名和ID,稍后将与rwinsta一起使用以删除会话 我在stackoverflow上找到了一个脚本,它几乎可以通过搜索会话和提供一个只显示用户名和会话ID的简短列表来验证概念,但我正在努力解决格式问题。Foreach和replace正在修剪空白并导致行切换列 function Get-TSSessions { param ($ComputerName = "SERVER")

我需要在Powershell中创建一个应用程序,该应用程序将列出“已断开连接”的远程会话,它必须输出会话的用户名和ID,稍后将与rwinsta一起使用以删除会话

我在stackoverflow上找到了一个脚本,它几乎可以通过搜索会话和提供一个只显示用户名和会话ID的简短列表来验证概念,但我正在努力解决格式问题。Foreach和replace正在修剪空白并导致行切换列

function Get-TSSessions
{
    param ($ComputerName = "SERVER")
    qwinsta /server:$ComputerName | ForEach-Object {$_.Trim() -replace "\s+","," } | ConvertFrom-Csv
}

Get-TSSessions -ComputerName "SERVER2016" | ft -Property USERNAME, ID -AutoSize
然后,我得出以下结论:

USERNAME      ID
--------      --
0             Disc
1             Conn
Administrator 5
6             Disc
65536         Listen
如果我从Qwinsta命令中删除ForEach对象{$\.Trim()-replace“\s+”,“,”},然后从Get-TSSessions中删除格式表-Property USERNAME,ID-Autosize,我将得到下表:

 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 services                                    0  Disc
 console                                     1  Conn
 31c5ce94259d4...  Administrator             5  Active
                   admin2                    6  Disc
 31c5ce94259d4...                        65536  Listen
 rdp-tcp                                 65537  Listen
如您所见,当第一列不包含条目时,第一个表中的结果将移动到左边的空白处,因此两个断开连接的会话不会显示正确的用户名和ID


我基本上只需要显示第二个表中的Username和ID列。

编辑:根据问题的更清晰描述进行更新

似乎
qwinsta.exe
以固定宽度列输出其文本,因此以下内容应正确替换空格以提供有效的CSV输出:

function Get-TSSessions
{
    param ($ComputerName = "SERVER")

    qwinsta /server:$ComputerName |
        ForEach-Object {$_ -replace "\s{2,18}","," } | 
            ConvertFrom-Csv
}

Get-TSSessions -ComputerName "SERVER2016" |
    Where-Object State -eq 'Disc' |
        Format-Table UserName, ID -AutoSize

你为什么要重新发明轮子?只需使用task manager并查看用户选项卡task manager将不会被最终用户访问如果task manager不信任他们,为什么您要授予他们访问powershell的权限?他们将无法访问powershell-在这之前会有一个GUI,用户对桌面的访问非常有限。基本上,我需要一个用于qwinsta和rwinsta命令和过滤器的GUI,以便只允许通过组合框选择特定用户。GUI部分将在我可以让脚本按预期工作后添加。谢谢boxdog,很抱歉造成混淆。我现在已经调整了问题。谢谢你boxdog-我已经开始测试它了,它正是我所需要的!我做了一些补充,并将张贴它一旦完成,以防其他人有需要它。