• powershell命令查询域用户所登录的计算机


    1.在C:Program FilesWindowsPowerShellModulesGet-UserLogon,新建Get-UserLogon文件夹,并新建Get-UserLogon.psm1文件内容如下

    function Get-UserLogon {
     
    [CmdletBinding()]
     
    param
     
    (
     
    [Parameter ()]
    [String]$Computer,
     
    [Parameter ()]
    [String]$OU,
     
    [Parameter ()]
    [Switch]$All
     
    )
     
    $ErrorActionPreference="SilentlyContinue"
     
    $result=@()
     
    If ($Computer) {
     
    Invoke-Command -ComputerName $Computer -ScriptBlock {quser} | Select-Object -Skip 1 | Foreach-Object {
     
    $b=$_.trim() -replace 's+',' ' -replace '>','' -split 's'
     
    If ($b[2] -like 'Disc*') {
     
    $array= ([ordered]@{
    'User' = $b[0]
    'Computer' = $Computer
    'Date' = $b[4]
    'Time' = $b[5..6] -join ' '
    })
     
    $result+=New-Object -TypeName PSCustomObject -Property $array
     
    }
     
    else {
     
    $array= ([ordered]@{
    'User' = $b[0]
    'Computer' = $Computer
    'Date' = $b[5]
    'Time' = $b[6..7] -join ' '
    })
     
    $result+=New-Object -TypeName PSCustomObject -Property $array
     
    }
    }
    }
     
    If ($OU) {
     
    $comp=Get-ADComputer -Filter * -SearchBase "$OU" -Properties operatingsystem
     
    $count=$comp.count
     
    If ($count -gt 20) {
     
    Write-Warning "Search $count computers. This may take some time ... About 4 seconds for each computer"
     
    }
     
    foreach ($u in $comp) {
     
    Invoke-Command -ComputerName $u.Name -ScriptBlock {quser} | Select-Object -Skip 1 | ForEach-Object {
     
    $a=$_.trim() -replace 's+',' ' -replace '>','' -split 's'
     
    If ($a[2] -like '*Disc*') {
     
    $array= ([ordered]@{
    'User' = $a[0]
    'Computer' = $u.Name
    'Date' = $a[4]
    'Time' = $a[5..6] -join ' '
    })
     
    $result+=New-Object -TypeName PSCustomObject -Property $array
    }
     
    else {
     
    $array= ([ordered]@{
    'User' = $a[0]
    'Computer' = $u.Name
    'Date' = $a[5]
    'Time' = $a[6..7] -join ' '
    })
     
    $result+=New-Object -TypeName PSCustomObject -Property $array
    }
     
    }
     
    }}If($All){
     
    $comp=Get-ADComputer-Filter*-Properties operatingsystem
     
    $count=$comp.count
     
    If($count -gt 20){Write-Warning"Search $count computers. This may take some time ... About 4 seconds for each computer ..."}foreach($u in $comp){Invoke-Command-ComputerName $u.Name-ScriptBlock{quser}|Select-Object-Skip1|ForEach-Object{
     
    $a=$_.trim()-replace 's+',' '-replace '>',''-split 's'If($a[2]-like '*Disc*'){
     
    $array=([ordered]@{'User'= $a[0]'Computer'= $u.Name'Date'= $a[4]'Time'= $a[5..6]-join ' '})
     
    $result+=New-Object-TypeNamePSCustomObject-Property $array
     
    }else{
     
    $array=([ordered]@{'User'= $a[0]'Computer'= $u.Name'Date'= $a[5]'Time'= $a[6..7]-join ' '})
     
    $result+=New-Object-TypeNamePSCustomObject-Property $array
     
    }}}}Write-Output $result
    }脚本中含有三个参数分别是-computer –all –ou。
    -computer参数中是获取特定电脑的登陆用户,-ou是搜索此OU运行中所有计算机的所有登录用户,最后一个参数-all提供包含前两个所有的信息。

    Get-userlogon -ou 'OU=test,DC=test,DC=cn'|export-csv E:computer.csv –NoTypeInformation -encoding "utf8"


  • 相关阅读:
    2-7-配置iptables防火墙增加服务器安全
    2-6-搭建无人执守安装服务器
    2-4-搭建FTP服务器实现文件共享
    第一阶段连接
    在mfc中如何显示出系统时间
    关于const
    第三章类图基础
    算法分析的数学基础
    第十二章 派生类
    学好C++该看什么书呢?
  • 原文地址:https://www.cnblogs.com/victor0/p/13522618.html
Copyright © 2020-2023  润新知