我试图将两个函数的输出与默认的Get-ADUser
-cmdlet的输出组合在一起。我对什么时候创建帐户感兴趣,是否锁定以及名称是什么。我也想知道用户何时最后一次登录(使用多个DC),以及该帐户是否被用作共享邮箱。组合powershell输出
我已经写了两个自定义功能Get-ADUserLastLogon
和isSharedMailbox
,这两个功能使用Write-Output
函数输出它们的输出。在Get-ADUserLastLogon
的情况下,这将是Lastlogon:时间和在isSharedMailbox
的情况下,这将是共享:是/否。我也是在foreach循环使用标准Get-ADUser
呼叫现在
的Get-ADUser
默认输出是:
SAM帐户名LockedOut创建
------------- - --------- -------
ACC假23-10-2015八时二十〇分20秒
的自定义功能,输出为如下:
Lastlogon:1601年1月1日1:00:00
共享:是
我想什么是对LastLogon和共享 '头' 组合成的Get-ADUser便有结合。因此,输出将变为:
SAM帐户名LockedOut创建LastLogon共享
的当前代码,其中的帐户会从一个Excel工作表导入的代码:
foreach($username in $usernameWithTld){
if ($username -eq $NULL){
break
}
$usernameWithoutTld = $username.split('\')
Get-ADUser $usernameWithoutTld[1] -Properties LockedOut, SamAccountName,
Created -ErrorAction Stop | Select-Object SAMAccountName, LockedOut,
Created
Get-ADUserLastLogon -UserName $usernameWithoutTld[1]
# Shared mailbox?
isSharedMailbox -mailboxname $usernameWithoutTld[1]
}
功能代码:
function isSharedMailbox([string]$mailboxname){
$isObject = Get-ADUser -Filter {name -eq $mailboxname} -SearchBase "..." | Select-Object DistinguishedName,Name
if ($isObject -match "DistinguishedName"){
$output = "Shared: no"
Write-Output $output
} else {
$output = "Shared: No"
Write-Output $output
}
}
function Get-ADUserLastLogon([string]$userName){
$dcs = Get-ADDomainController -Filter {Name -like "*"}
$time = 0
foreach($dc in $dcs)
{
$hostname = $dc.HostName
$user = Get-ADUser $userName | Get-ADObject -Properties lastLogon
if($user.LastLogon -gt $time)
{
$time = $user.LastLogon
}
}
$dt = [DateTime]::FromFileTime($time)
Write-Output "LastLogon : $dt"
}
我相信有很多改进这是可以做的,我仍然在学习如何编写(适当的)PowerShell。我希望有人能回答我的问题。
'isSharedMailbox'总是返回'No',可能要修复;) –