【问题标题】:Windows Command To Get Inactive Users Passed 90 Days让非活动用户超过 90 天的 Windows 命令
【发布时间】:2021-06-26 19:27:09
【问题描述】:

我正在尝试在 Windows 上编写一个命令,用于搜索超过 90 天不活动的用户帐户。

以下命令有效:

Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 | Format-Table Name,ObjectClass -A

但是,这需要安装 AD 组件才能使“Search-ADAccount”参数正常工作。有没有一种无需安装任何额外组件即可获取此信息的方法?

【问题讨论】:

  • 使用 ADSI,但我强烈建议不要这样做。一点都不友好。为什么不安装 Active Directory 模块?使用 Quest Active Directory 模块/管理单元,您甚至可能会有更好的运气。
  • @AbrahamZinala 我需要在几台机器上运行检查,并且不允许安装额外的模块,我一直在寻找替代方法,但这一切似乎都导致了安装模块的路径:/我正在尝试获取本地用户帐户的此信息。
  • 为什么需要在远程机器上安装它们?您不在域环境中吗?您在搜索本地帐户吗?
  • 如果您想获取本地帐户的信息,为什么要在 AD 中做任何事情? Search-ADAAccount,其名称中有 AD 权利。 get-localuser、get-localgroup、get-localgroupmember 包含在 ps5 及更高版本中
  • 是的,我同意@DougMaurer 的观点,您已经为此拥有了本机 PS5.1 cmdlet。没有“非活动本地帐户”之类的东西,那是 AD 属性/构造。但是,您可以搜索“已禁用”本地帐户 Get-LocalUser|where{-not $_.Enabled}

标签: windows powershell command


【解决方案1】:

根据您的评论,您可以按照以下方式进行操作:

[CmdletBinding()]
    Param(
        [Parameter(Mandatory=$true,
                   ValueFromPipeLine=$true,
                   HelpMessage='Enter Computer Name')]
                   [Alias('CN','Computer')]
                   [string[]]$ComputerName)
 Process{
     try{
        Foreach($Computer in $ComputerName){
            $UNC  = Get-ChildItem -Path "\\$ComputerName\c$\Users" -ErrorAction Stop
            
                Foreach($user in $UNC.name){
                   $UserDate = (net user $user /domain | Select-String -SimpleMatch "Last Logon" | Select-Object -ExpandProperty Line -ErrorAction SilentlyContinue ).Split(' ') 2>&1 | Select-Object -Skip 20 -First 1 
                            [PSCustomObject] @{
                                "User Name"   = $user
                                "Last Logon"  = $UserDate
                                    }
                                }
                            } 
                        }Catch{
                            [PSCustomObject] @{
                                "User Name"   = $user
                                "Last Logon"  = $null

                        }
                    }
                }

如果您正在寻找特定用户,Net User 应该可以解决问题,但是针对已登录计算机的用户列表,上述脚本可以为您提供一些反馈。

我只是对其中的本地帐户部分感到困惑,它们是实际的本地帐户还是域帐户?

【讨论】:

  • 非常感谢,只查找本地用户帐户。
猜你喜欢
  • 2020-08-25
  • 1970-01-01
  • 2021-06-28
  • 2017-03-04
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
相关资源
最近更新 更多