Nu sunt un tip sysAdmin/PowerShell în sine, dar întâmpin probleme în a face această interogare Powershell să funcționeze.
Este necesar să retrageți toți utilizatorii dintr-un anumit grup de securitate Windows și să-i formatez într-un mod specific (prezentat mai jos), totuși am unele probleme la identificarea de ce filtrul meu pentru grupurile de securitate nu funcționează și mă întreb dacă este ceva în neregulă cu modul în care am ai instalat filtrul.
#Fragment
$searcher.filter = "(&(memberof=CN=Grupul meu de securitate Windows,OU=SecurityGroups,OU=Messaging,OU=Enterprise,DC=****,DC=****)(objectCategory=*)) "
$rezultate = $searcher.findall()
Am un punct de întrerupere configurat în PowerShell ISE, totuși $results nu conține nicio valoare în timpul depanării.
Am modelat acest lucru dintr-un script existent de la un coleg, unde se pare că interogează un DL și văd valorile $results când depanez acest lucru:
#--------------------------------------------- --------
Exemplu de filtru #DL (funcționează)
#--------------------------------------------- --------
$Searcher.Filter = "(&(memberOf=CN=DL_TestApp_Admin,OU=Liste de distribuție,OU=Messagerie,OU=Enterprise,DC=dcInfo,DC=dcInfo,DC=****)(objectCategory=*))"
$rezultate = $searcher.findall()
Iată întregul script PS (modificat de mine) care filtrează grupurile de securitate Windows
$curdate = (Get-Date).ToString("MMddyyyy")
$baseDN = „LDAP://”
$Searcher = New-Object DirectoryServices.DirectorySearcher
$searcher.searchroot = nou-obiect system.directoryservices.directoryentry($basedn)
#--------------------------------------------- --------
#Filtrul de grup de securitate Windows (nu funcționează)
#--------------------------------------------- --------
$searcher.filter = "(&(memberof=CN=Grupul meu de securitate Windows,OU=SecurityGroups,OU=Messaging,OU=Enterprise,DC=****,DC=****)(objectCategory=*)) "
$rezultate = $searcher.findall()
#--------------------------------------------- --------
#Construiți setul de date într-un format specific
#--------------------------------------------- --------
$usercsv = $rezultate | #-Obiect {
New-Object -TypeName PSObject -Property @{
„ID utilizator” = $_.properties['samAccountName'][0]
„Rol utilizator” = „Blah”
„Rol ridicat” = „Y”
„Utilizator intern” = „Y”
„Data ultimei conectări” = $null
„Informații specifice aplicației 1” = $null
„Informații specifice aplicației 2” = $null
„Data creării contului” = $null
„Data modificării ultimei parole” = $null
„Adresa de e-mail a utilizatorului” = $_.properties['mail'][0]
„Prenumele utilizatorului” = $null
„Nume utilizator” = $null
„Informații specifice aplicației 3” = $null
„Grup de revizuire” = $null
}
}
#export în csv
$usercsv | Select-Object -Property "User ID","Rol utilizator","Rol crescut","Utilizator intern","Data ultimei autentificare","Informații specifice aplicației 1","Informații specifice aplicației 2","Data creării contului ","Dată modificării ultimei parole","Adresa de e-mail a utilizatorului","Prenumele utilizatorului","Numele utilizatorului","Informații specifice aplicației 3","Grupul de revizuire" | Export-Csv -NoTypeInformation -Cale „UsersListing_$curdate.csv”
Write-Host „Scris”, $results.Count, „înregistrare(e)”
#eliminarea ultimului CR LF
#TODO: Mutați aceasta într-o funcție comună într-un script separat pentru toți
scripturi de apelat
$stream = [IO.File]::OpenWrite("UsersListing_$curdate.csv")
$stream.SetLength($stream.Length - 2)
$stream.Close()
$stream.Dispose()
Inițial, am scris acest lucru pentru a rula într-o conductă de lansare DevOps Poweshell, după cum urmează, pentru a produce un fișier csv:
$Members = Get-ADGroup -Filter {Name -eq "WSG"} -Properties Member |
Select-Object -ExpandProperty Member
$GlobalCatalog = "$((Get-ADDomainController -Discover).Name):xxxx"
$output = Foreach ($Utilizator în $Members)
{
Get-ADUser -Identity $User -Server $GlobalCatalog -Properties CN,
Adresă de e-mail, DataExpirației Contului, Creat, Pagina de pornire, Data ultimei autentificări,
PasswordLastSet, când este creată | Selectare-obiect CN,
SamAccountName,EmailAddress, AccountExpirationDate, Created, Enabled,
Pagina de pornire, LastLogonDate, Nume, PasswordLastSet, UserPrincipalName,
când este creat
}
#ieșire fișier csv
$ieșire | Export-Csv $Env:TEMP\Users.csv -NoTypeInformation
În acest caz, nu a contat formatul de ieșire și nu sunt sigur dacă pot modifica această interogare pentru a scoate rezultatele în acest format:
„ID utilizator” = $_.properties['samAccountName'][0]
„Rol utilizator” = „Blah”
„Rol ridicat” = „Y”
„Utilizator intern” = „Y”
„Data ultimei conectări” = $null
„Informații specifice aplicației 1” = $null
„Informații specifice aplicației 2” = $null
„Data creării contului” = $null
„Data modificării ultimei parole” = $null
„Adresa de e-mail a utilizatorului” = $_.properties['mail'][0]
„Prenumele utilizatorului” = $null
„Nume utilizator” = $null
„Informații specifice aplicației 3” = $null
„Grup de revizuire” = $null
Și rezultatele din această interogare sunt în acest format special:
CN:
SamAccountName:
Adresa de e-mail :
AccountExpirationDate:
Creată :
Activat :
Pagina principala :
LastLogonDate:
Nume :
PasswordLastSet:
UserPrincipalName:
când este creat:
Multumesc anticipat pentru orice ajutor.