我有一個問題要得到誰是即將在不到8天的時間到期特定用戶的廣告組到期,並列出他的團體。用戶帳戶約
我能夠找到用戶提供:
$users = Search-ADAccount -AccountExpiring -TimeSpan "7" | FT sAMAccountName -HideTableHeaders
但是當我嘗試的foreach:
foreach ($user in $users) { Get-ADUser -identity $user -Properties memberof | select -ExpandProperty memberof | %{ $_.Split(',')[0]; }
我得到:
GET-ADUser便有:無法綁定參數「身份」。不能轉換「Microsoft.PowerShell.Commands.Internal.Format.FormatEndData」類型「Microsoft.PowerShell.Commands.Internal.Format.FormatEndData」的 值輸入「Microsoft.ActiveDirectory.Management.ADUser」。 在C:\腳本\ GET expiry.ps1:13字符:23 + GET-ADUser便有-identity $用戶-Properties的memberOf |選擇-ExpandProperty成員... + ~~~~~ + CategoryInfo:InvalidArgument:(:) [獲取-ADUser便有],ParameterBindingException + FullyQualifiedErrorId:CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.GetADUser
但對於一個用戶它的工作原理:
Get-ADUser -identity guest1 -Properties memberof | select -ExpandProperty memberof | %{ $_.Split(',')[0]; }
CN = MY_GROUP
我的問題是,如何FormatEndData轉換成ADUser便有? 或者有沒有更好的方式來獲得我所需要的?
答:
小的幫助,我能得到我想要的東西,此代碼如下
$datefrom = (Get-Date) $dateto = (Get-Date).AddDays(8) $users = Get-ADUser -filter {(AccountExpirationDate -gt $datefrom) -and (AccountExpirationDate -lt $dateto)} -Properties samaccountname,memberof
foreach ($user in $users) { $groups = $user | select -Property samaaccountname -ExpandProperty memberof | %{ $_.Split(',')[0]; } | %{ $_.Split('=')[1]; } foreach ($group in $groups){ if ($group -eq "MY_GROUP") { Write-Host $user.samaccountname echo $group }
} }