使用大于或等于1小时的空闲时间断开用户连接

时间:2017-07-07 20:34:25

标签: powershell powershell-v2.0 powershell-v3.0

我正在编写一个脚本,根据是否有用户登录来过滤服务器。如果没有用户登录,则脚本会将服务器的名称导出到文本文件。如果有用户登录,则脚本将通过用户并删除那些断开连接或空闲时间超过60分钟的用户。

我已经完成了第一个过滤器,但我无法过滤空闲时间并找出哪些用户有超过60分钟的空闲时间,我能够过滤那些已经登录超过一天的人,但是我不要以为这会有所帮助。

我在下面列出了相关代码: 谢谢。

$Servers = Get-Content 'H:\main\computernames.txt'
$openservers =@()
foreach ($Server in $Servers)
{
    if (-not( Test-Connection $Server -Count 1 -Quiet )) { continue }

    if (-not( Convert-QueryToObjects $Server -ErrorAction SilentlyContinue))
    {

     $openservers += $server
     $openservers | Out-File 'H:\main\server\openservers.txt'
 }

    else
    {  
        Convert-QueryToObjects -Name $Server | Where-Object  {@('Active','Disconnected') -contains $_.SessionState} | select @{Name='Server Name';Expression={$_.ComputerName}},
        @{Name='Username'; Expression={$_.Username}}, @{Name='Session State'; Expression={$_.SessionState}}, @{Name='Idle Time'; Expression={$_.IdleTime}}, @{Name='ID'; Expression={$_.ID}}

    if((Convert-QueryToObjects -Name $Server|?{@('Disconnected') -contains $_.SessionState}) -or (Convert-QueryToObjects -Name $Server|Where-Object {[datetime]$_.LogonTime -le (Get-Date).AddDays(-1)}))

    {

        H:\WindowsPowerShell\Get-LoggedOnUser.ps1 -ComputerName $Server | Disconnect-LoggedOnUser -Verbose 
        Write-Output "--------------------------------"  

    }


  }
  }

0 个答案:

没有答案