获取用户会话断开连接的ServerNames

时间:2011-07-08 05:29:00

标签: arrays powershell

我想获得一个脚本,用于获取通过管道输入的服务器列表,其中特定用户的会话断开连接,我得到了这样的一些,有人可以帮助我。

#

#function Get-DisconnectedUsers {

#param(
#[parameter(Mandatory=$true,ValueFromPipeline=$true)]
#[string]$compnames
#)
query session /server:$compnames | where-object{ $_ -notmatch '^ SESSIONNAME' } | foreach-object{ 
$item = "" | Select "Active", "SessionName", "Username", "Id", "State", "Type", "Device"
$item.Active = $_.Substring(0,1) -match '>' 
$item.SessionName = $_.Substring(1,18).Trim() 
$item.Username = $_.Substring(19,20).Trim() 
$item.Id = $_.Substring(39,9).Trim() 
$item.State = $_.Substring(48,8).Trim() 
$item.Type = $_.Substring(56,12).Trim() 
$item.Device = $_.Substring(68).Trim() 

#$sessions | ?{ $_.State -eq 'Disc' }
#} 
#}



#$ErrorActionPreference = "silentlycontinue"
#Get-VM -VMMServer scvmm01.org |select-object vmhost,ComputerNameString | 
    #Get-DisconnectedUsers -compnames $_.vmhost | Select-Object active,username,state, |
    #Select-Object @{Name='ServerName';Expression={$_.vmhost}},@    #{Name='Username';Expression={$username}},@{Name='State';Expression={$state}}

#| where-Object{$_.user -eq "vinith"}

有人可以帮我修改一下吗?工作

1 个答案:

答案 0 :(得分:1)

尝试使用PSTerminalServices PowerShell模块(http://psterminalservices.codeplex.com/)。以下内容将告诉您管理员帐户是否在文件中的任何服务器上断开了会话。

Import-Module PSTerminalServices

Get-Content servers.txt | Foreach-Object { 
    Get-TSSession -ComputerName $_ -UserName administrator -State Disconnected
}: