我如何获得来自AD的域名pipe理员用户列表,并且在过去30天内没有login?
user360071,这里是一个PowerShell脚本,将做你想做的。
Import-Module ActiveDirectory $Age = 30 $When = ((Get-Date).AddDays(-$Age)).Date $Members = (Get-ADGroupMember -Identity "Domain Admins" -Recursive).DistinguishedName Foreach ($Member in $Members) { Get-ADUser -Identity $Member -Property LastLogonDate | Where LastLogonDate -lt $When | Select SamAccountName,UserPrincipalName,LastLogonDate | Export-CSV -Path $env:USERPROFILE\Desktop\users.csv -NoTypeInformation -Append }
您可以进行一些小改动,以便您可以select要查找尚未login的帐户的时间。以下是更改的版本。
Import-Module ActiveDirectory $Age = Read-Host "Accounts that have not been logged into in the last how many days should be shown?" $When = ((Get-Date).AddDays(-$Age)).Date $Members = (Get-ADGroupMember -Identity "Domain Admins" -Recursive).DistinguishedName Foreach ($Member in $Members) { Get-ADUser -Identity $Member -Property LastLogonDate | Where LastLogonDate -lt $When | Select SamAccountName,UserPrincipalName,LastLogonDate | Export-CSV -Path $env:USERPROFILE\Desktop\users.csv -NoTypeInformation -Append }
更新的答案
你好user360071。 当你想添加另一个请求到你的问题或需要澄清你想问什么,你可以编辑你的问题,并保存更改。
另外,您还添加了希望能够将结果保存到Excel文件的function。
你试过了>> users.csv但是Excel文件是空的。 在PowerShell中,你想要做的是| Export-CSV users.csv | Export-CSV users.csv 。 脚本已经被更新了。
要实现user5870571的build议与>> users.csv (万一你的文件是空的 – 我的也是)执行以下操作:
1)将下面的脚本保存到.ps1文件。 请注意,我删除了Export-Csv
Import-Module ActiveDirectory $Age = Read-Host "Accounts that have not been logged into in the last how many days should be shown?" $When = ((Get-Date).AddDays(-$Age)).Date $Members = (Get-ADGroupMember -Identity "Domain Admins" -Recursive).DistinguishedName Foreach ($Member in $Members) { Get-ADUser -Identity $Member -Property LastLogonDate | Where LastLogonDate -lt $When | Select SamAccountName,UserPrincipalName,LastLogonDate }
2)一旦你保存了文件,从一个提升的powershell提示符导航到它,并在最后添加>> users.csv 。
例如,我将我的文件命名为get-dausers.ps1 ,并将其保存在桌面上,打开get-dausers.ps1提示并导航到该文件,然后键入.\get-dausers.ps1 >> users.csv – 这将生成一个.csv文件桌面,它不会是空的了。
要build立在user5870571的post –
我build议使用ADUser帐户的LastLogonTimestamp属性,而不是LastLogonDate 。
在Active Directory中的lastLogon与lastLogonTimestamp
Lastlogon只在执行身份validation的域控制器上更新,不会被复制。
LastLogontimestamp被复制,但默认情况下只有在比前一个值早14天或更多的时候。
以下是更新的代码。 我还添加了“按LastLogonsorting”,因为我觉得这很有用。
Import-Module ActiveDirectory $Age = Read-Host "Accounts that have not been logged into in the last how many days should be shown?" $When = ((Get-Date).AddDays(-$Age)).Date $Members = (Get-ADGroupMember -Identity "Domain Admins" -Recursive).DistinguishedName Foreach ($Member in $Members) { Get-ADUser -Filter {DistinguishedName -eq $Member} -Property LastLogonTimestamp | Where {([datetime]::FromFileTime($_.LastLogonTimestamp)) -lt $When} | Select SamAccountName,UserPrincipalName,@{Name="LastLogon";Expression={[datetime]::FromFileTime($_.LastLogonTimestamp)}} | Sort-Object LastLogon | Export-CSV -Path $env:USERPROFILE\Desktop\users.csv -NoTypeInformation -Append }