Pag-upload ng data mula sa ad powershell. Paano mag-download ng listahan ng mga user mula sa Active Directory

Mga script para sa pag-unload ng lahat ng user mula sa MS Active Directory (ITGC)

Ivan Piskunov

Isa sa mga karaniwang pamamaraan ng pag-audit ITGC para sa catalog Aktibong Direktoryo ay upang makakuha ng pag-download ng lahat ng mga gumagamit ng domain. Batay sa data na nakuha, ang mga pamamaraan ng pagsubok ay nabuo, halimbawa, pag-aaral sa listahan ng mga administrator o pagkilala sa mga user na may nag-expire na password. Ang pinakaepektibong paraan upang lumikha ng ganoong pag-upload ay ang paggamit karaniwang interface PowerShell , mga halimbawa na tatalakayin natin sa artikulong ito

1. Express upload gamit ang PowerShell script

Nasa ibaba ang script ng PowerShell, bilang isa sa pinakasimpleng at mabilis na paraan kumuha ng listahan ng lahat ng mga gumagamit ng AD domain sa CSV na format, na maaaring mabuksan nang walang anumang mga problema sa Excel.

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = "LDAP://ou=Users,ou=Departmets,dc=test,dc=ru" $objSearcher.Filter = "(&(objectCategory=person) (!userAccountControl:1.2.840.113556.1.4.803:=2))" $users = $objSearcher.FindAll() # Bilang ng mga account $users.Count $users | ForEach-Object ($user = $_.Properties New-Object PsObject -Property @( Position = $user.description Department = $user.department Login = $user.userprincipalname Telepono = $user.telephonenumber Room = $user.physicaldeliveryofficename Buo pangalan = $user.cn ) ) | I-export-Csv -NoClobber -Encoding utf8 -Path C: list_domain_users.csv

Upang gumana ang script sa iyong system, kailangan mong bahagyang iwasto ito, lalo na ipasok ang mga kinakailangang parameter, i.e. as in sa halimbawang ito ito ang mga parameter Mga gumagamit sa departamento Mga kagawaran sa domain Test.ru. At ipahiwatig din ang landas kung saan naka-save ang file list_domain_users.csv

Pagkatapos mag-unload, kung bubuksan mo ito kaagad list_domain_users.csv , ay magmumukhang hindi nababasa, gayunpaman, gamit ang karaniwang paraan na madali nating maipasok ito sa format na kailangan natin. Buksan sa Excel list_domain_users.csv , piliin ang unang column, pagkatapos ay pumunta sa tab na “Data” at i-click ang “Text by Column”. Piliin ang "delimited" at i-click ang "Next". handa na!

!Kailangang tandaan, Ano ang script na ito ay hindi magpapakita ng higit sa 1000 mga gumagamit. Para sa maliit na kumpanya Ito ay medyo angkop, ngunit para sa mga may malaking bilang ng mga gumagamit sa kanilang domain, dapat nilang gamitin ang mga pamamaraan na inilarawan sa ibaba.

2. Advanced na PowerShell cmdlet para sa pagtanggap ng mga upload Mga aktibong user Direktoryo

Active Directory Module para sa Windows PowerShell tool (ipinakilala sa Windows Server 2008 R2 at mas mataas), ay nagbibigay-daan sa iyo na lumikha ng mga cmdlet na nagsasagawa ng iba't ibang mga manipulasyon sa mga bagay na direktoryo ng AD. Ang cmdlet ay ginagamit upang makakuha ng impormasyon tungkol sa mga user at kanilang mga katangian Get-ADUser.

Upang magsimula sa maglunsad ng Powershell window na may mga karapatan ng administrator at pag-import Aktibong module Direktoryo para sa karagdagang pagkilos:
Activedirectory ng Import-Module

Upang ilista ang lahat ng domain account at, patakbuhin natin ang utos:

Get-ADUser -filter *

Upang ipakita ang kumpletong impormasyon tungkol sa lahat ng magagamit na mga katangian user tuser, patakbuhin ang command

Get-ADUser -identity tuser -properties *


Halimbawa, interesado kami sa impormasyon tungkol sa petsa ng pagbabago ng password at oras kung kailan ito mag-e-expire . Ang resulta ng command ay maaaring i-export sa isang text file:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Pangalan, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:tempusers.txt

O agad-agad i-upload sa CSV , na sa hinaharap ay magiging maginhawa upang i-export sa Excel (bilang karagdagan, gamit ang sort-object ay pag-uuri-uriin namin ang talahanayan ayon sa column na PasswordLastSet, at magdagdag din ng kung saan kundisyon - ang user name ay dapat maglaman ng string na "Dmitry")

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | kung saan ($_.pangalan –tulad ng “*Dmitry*”) | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | I-export-csv -path c:tempuser-password-expires-2015.csv

Sa mga komento sa nakaraang artikulo, naalala namin ang tungkol sa accounting sa Excel sa halip na 1C. Well, tingnan natin kung gaano mo kakilala ang Excel. Ngayon ay ipapakita ko sa iyo kung paano kumuha ng data mula sa Active Directory at magtrabaho kasama nito nang walang mga macro at PowerShell - gamit lamang ang mga karaniwang mekanismo ng Office. Halimbawa, madali kang makakakuha ng analytics sa paggamit ng mga operating system sa iyong organisasyon kung wala ka pang katulad ng Microsoft SCOM. Well, o magpainit lang at alisin ang iyong isip sa mga script.


Siyempre, maaari mong makuha ang data tulad ng sa mga halimbawa sa ibaba nang literal sa isang linya sa PowerShell. Ngunit, una, ang PowerShell ay masyadong boring, at pangalawa, ang Excel ay maaaring dynamic na mag-update ng data - ang mga resultang dokumento ay maaaring mai-publish online at makalimutan ang tungkol sa pag-update sa kanila.

Para magtrabaho sa data, gagamitin ko ang mekanismo ng Power Query. Para sa Office 2010 at 2013 kakailanganin mong i-install ang plugin, sa Microsoft Office 2016 naka-built-in na ang modyul na ito. Sa kasamaang palad, ang karaniwang edisyon ay hindi sapat para sa amin.


Ang mekanismo mismo ay idinisenyo upang tumanggap at magproseso ng data mula sa karamihan iba't ibang mapagkukunan- mula sa lumang ODBC at mga text file, hanggang Exchange, Oracle at Facebook. Higit pang mga detalye tungkol sa mekanismo at ang built-in na scripting language na "M" ay naisulat na sa Habré, ngunit titingnan ko ang ilang mga halimbawa gamit ang Power Query para kunin ang data mula sa Active Directory.

Warm-up: Tingnan natin kung kailan nag-log in ang aming mga user

Ang kahilingan sa database ng domain mismo ay nilikha sa "Data - Bagong kahilingan― Mula sa ibang mga mapagkukunan ― Mula sa Active Directory.”



Tukuyin ang data source.


Kakailanganin mong pumili ng domain name at ibigay ang kinakailangang impormasyon sa koneksyon. Susunod, pipiliin namin ang uri ng mga bagay, sa halimbawang ito - gumagamit. Sa kanan sa preview window, tumatakbo na ang query, na nagpapakita ng preview ng data.



Naghahanda kami ng kahilingan at hinahangaan ang preview.


Dapat mong ihanda muna ang iyong kahilingan sa pamamagitan ng pag-click sa pindutang "i-edit" at pagpili kinakailangang mga hanay. Sa pangkalahatan, ang mga column na ito ay mga klase. Ang bawat isa sa kanila ay naglalaman ng isang set ng mga partikular na katangian ng isang Active Directory object, maliban sa pangunahing column displayName, na mismo ay isang katangian. Magfo-focus ako sa mga klase gumagamit, tao, itaas At securityPrincipal. Ngayon ay kailangan mong pumili kinakailangang katangian mula sa bawat klase gamit ang "extension" - isang icon na may dalawang arrow sa header ng column:

  • Klase gumagamit palawakin sa pamamagitan ng pagpili lastLogonTimestamp At userAccountControl;
  • V tao piliin natin Numero ng telepono;
  • V itaaskapag Nilikha;
  • at sa securityPrincipalSamAccountName.


Pinalawak namin ang kahilingan.


Ngayon ay i-set up natin ang filter: sa partikular, upang hindi makakuha ng mga naka-block na account, kailangan mo ang userAccountControl attribute upang magkaroon ng value na 512 o 66048. Maaaring iba ang filter sa iyong kapaligiran. Maaari kang magbasa nang higit pa tungkol sa katangian sa dokumentasyon ng Microsoft.



Paglalapat ng filter.


Minsan mali ang pagtukoy ng Excel sa format ng data, lalo na ang halaga ng lastLogonTimestamp attribute. Kung ang ganitong kasawian ay biglang dumating sa iyo, maaari mong itakda ang tamang format sa tab na "Convert".

Ngayon ang column ng userAccountControl ay dapat tanggalin - hindi na ito kailangan sa display. At i-click ang "I-download at isara".


Ang resulta ay isang plato na nangangailangan lamang ng kaunting mga pagtatapos. Halimbawa, palitan ang pangalan ng mga column sa isang bagay na mas nababasa. At ipasadya awtomatikong pag-update datos.


Ang awtomatikong pag-update kapag nagbubukas ng talahanayan o sa pamamagitan ng timeout ay na-configure sa tab na “Data” sa “Properties”.



Pagse-set up ng pag-update ng data.


Matapos makumpleto ang pag-set up ng pag-update, maaari mong ligtas na ibigay ang talahanayan sa departamento ng mga tauhan o serbisyo sa seguridad - ipaalam sa kanila kung sino ang nag-log in sa system at kung kailan.


Ang code ng kahilingan sa wikang "M" ay nasa ilalim ng spoiler.

let Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Object Categories"], user1 = domain.ru(), #"Remote Column" = Table.RemoveColumns(user1,( "organizationalPerson", "shadowAccount", "posixAccount", "msExchOmaUser", "msExchBaseClass", "msExchIMRecipient", "msExchCertificateInformation", "msExchMultiMediaUser", "msExchMailStorage", "msExchCustomAttributed", "disting), #"Expanded element securityPrincipal" = Table.ExpandRecordColumn(#"Inalis na column", "securityPrincipal", ("sAMAccountName"), ("sAMAccountName")), #"Expand element top" = Table.ExpandRecordColumn(#"Expand element securityPrincipal ", "top", ("whenCreated"), ("whenCreated")), #"Expand element person" = Table.ExpandRecordColumn(#"Expand element top", "person", ("telephoneNumber"), ("telephoneNumber ")), #"Expand element user" = Table.ExpandRecordColumn(#"Expand element person", "user", ("lastLogonTimestamp", "userAccountControl"), ("lastLogonTimestamp", "userAccountControl")), #"Rows may filter na inilapat" = Table.SelectRows(#"Expanded user element", bawat isa ( = 512 o = 66048)), #"Changed type" = Table.TransformColumnTypes(#"Rows with filter applied",(("lastLogonTimestamp", type datetime))), #"Remoted columns1" = Table.RemoveColumns(#"Changed type",("userAccountControl")) sa #"Remoted columns1"

Lumilikha kami address book, o kung ano ang gagawin kapag portal ng korporasyon hindi palakaibigan kay AD

Ang isa pang opsyon para sa paggamit ng Excel kasabay ng Active Directory ay ang gumawa ng address book batay sa AD data. Malinaw na magiging up-to-date lang ang address book kung maayos ang domain.


Gumawa tayo ng kahilingan para sa isang bagay gumagamit, palawakin ang klase gumagamit V mail, at klase tao V Numero ng telepono. Tanggalin natin ang lahat ng column maliban sa distinguishedName― inuulit ng istraktura ng domain ang istraktura ng enterprise, kaya ang mga pangalan Mga Yunit ng Organisasyon tumutugma sa mga pangalan ng mga departamento. Katulad nito, ang mga grupo ng seguridad ay maaaring gamitin bilang batayan para sa mga pangalan ng departamento.


Ngayon mula sa linya CN=Username, OU=Accounting Department, OU=Divisions, DC=domain, DC=ru kailangan mong i-extract nang direkta ang pangalan ng departamento. Ang pinakamadaling paraan upang gawin ito ay ang paggamit ng mga delimiter sa tab na Transform.



Pagkuha ng teksto.


Bilang mga delimiter ang ginagamit ko OU= At ,OU=. Sa prinsipyo, sapat na ang kuwit, ngunit ligtas ako.



Maglagay ng mga delimiter.


Ngayon gamit ang filter maaari mong putulin ang hindi kailangan OU, tulad ng mga naka-block na user at builtin, i-configure ang pag-uuri at pag-load ng data sa talahanayan.



Tingnan ang talahanayan ng buod.

Mabilis na ulat sa komposisyon ng mga workstation, nang hindi nagpapakilala ng mga ahente o iba pang paghahanda

Ngayon subukan nating lumikha ng isang kapaki-pakinabang na talahanayan sa pamamagitan ng pagkuha ng data sa mga computer. Gumawa tayo ng isang ulat sa mga operating system na ginagamit ng kumpanya: para dito gagawa kami ng isang kahilingan, ngunit sa oras na ito sa navigator pipiliin namin kompyuter.



Gumagawa kami ng kahilingan para sa object ng computer.


Umalis tayo sa mga klase ng column kompyuter At itaas at palawakin ang mga ito:

  • Klase kompyuter palawakin sa pamamagitan ng pagpili cn, operatingSystem, operatingSystemServicePack At operatingSystemVersion;
  • sa klase itaas piliin natin kapag Nilikha.


Advanced na kahilingan.


Kung nais, maaari kang gumawa ng isang ulat lamang sa mga operating system ng server. Halimbawa, i-filter ayon sa operatingSystem o operatingSystemVersion attribute. Hindi ko ito gagawin, ngunit itatama ko ang pagpapakita ng oras ng paglikha - Interesado lang ako sa taon. Upang gawin ito, sa tab na "Conversion," piliin ang column na kailangan namin at piliin ang "Taon" mula sa menu na "Petsa".



Kinukuha namin ang taon mula sa oras na pumasok ang computer sa domain.


Ngayon ang natitira na lang ay tanggalin ang column ng displayname bilang hindi kailangan at i-load ang resulta. Ang data ay handa na. Ngayon ay maaari kang magtrabaho sa kanila tulad ng sa isang regular na mesa. Una, gumawa tayo ng pivot table sa tab na "Insert" - " Pivot table" Sumang-ayon tayo sa pagpili ng data source at i-configure ang mga field nito.



Mga setting ng field ng pivot table.


Ngayon ang natitira na lang ay i-customize ang disenyo sa iyong panlasa at humanga sa resulta:



Talahanayan ng buod para sa mga computer sa AD.


Kung ninanais, maaari kang magdagdag iskedyul ng buod, din sa tab na Insert. Sa "Kategorya" (o sa "Mga Hilera", sa panlasa) idagdag operatingSystem, sa data ― cn. Sa tab na "Disenyo", maaari mong piliin ang uri ng tsart na gusto mo;



Pie chart.


Ngayon ay malinaw na nakikita na, sa kabila ng patuloy na pag-update, ang kabuuang bilang ng mga workstation na may Windows XP at mga server na may Windows 2003 ay medyo malaki. At mayroong isang bagay na dapat pagsikapan.


Ang request code ay nasa ilalim ng spoiler.

let Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Object Categories"], computer1 = domain.ru(), #"Remote Column" = Table.RemoveColumns(computer1,( "user", "organizationalPerson", "person")), #"Iba pang mga inalis na column" = Table.SelectColumns(#"Remoted columns",("displayName", "computer", "top")), #"Expand item computer" = Table.ExpandRecordColumn(#"Iba pang malayuang column", "computer", ("cn", "operatingSystem", "operatingSystemServicePack", "operatingSystemVersion"), ("cn", "operatingSystem", "operatingSystemServicePack", " operatingSystemVersion")), #"Extended top" = Table.ExpandRecordColumn(#"Expand computer", "top", ("whenCreated"), ("whenCreated")), #"Extracted year" = Table.TransformColumns( #" Pinalawak na elemento sa itaas",(("whenCreated", Date.Year))), #"Remoted column1" = Table.RemoveColumns(#"Extracted year",("displayName")) sa #"Remoted columns1"

Magdagdag ng mga tag

0

Mayroon akong sumusunod na gumaganang script na sumusuri kung malaking listahan mga user sa CSV file bilang miyembro ng AD group at isinusulat ang mga resulta sa results.csv.

Hindi sigurado kung paano i-convert ang script para mapalitan ko ang $group = "InfraLite" sa $group = DC .\List_Of_AD_Groups.CSV .

Kaya't ang script ay hindi lamang nagbabalik ng mga tugma para sa isang AD group, ngunit sa gayon ay nagbabalik ito ng mga tugma para sa 80 AD group na nasa List_of_AD_groups.csv. Ang pagsusulat ng OO/HINDI para sa bawat pangkat ng AD sa isang bagong column ng CSV (o kung hindi ito posible, ang paggawa ng hiwalay na CSV file para sa bawat pangkat na may mga resulta ay gagawin ang parehong.

Magagawa ko ito nang manu-mano sa pamamagitan ng pagbabago ng halaga mula sa $group at ang pangalan ng export file at muling patakbuhin ang script ng 80 beses, ngunit kailangang maging mabilis sa PS para magawa ito

halimbawa results.csv?:

NAME AD_GROUP1 AD_GROUP2 AD_GROUP80 atbp. user1 oo hindi oo user2 hindi oo user3 hindi oo hindi echo "UserName`InfraLite" >> results.csv $users = GC .\user_list.csv $group = "InfraLite" $members = Get-ADGroupMember -Identity $group -Recursive |

  • Piliin ang -ExpandProperty SAMAccountName foreach ($user in $users) ( if ($members -contains $user) ( echo "$user $group`tYes" >> results.csv ) else ( echo "$user`tNo" >> resulta .csv))
  • 2 sagot

    Pag-uuri:

0

Aktibidad

Ang isang maliit na solusyon sa iyong problema ay ang pagbalot ng iyong umiiral na code sa isa pang loop at lumikha ng isang output file para sa bawat pangkat:

Ang isang mas eleganteng diskarte ay ang lumikha ng template ng pagmamapa ng grupo, i-clone ito para sa bawat user, at i-populate ang isang kopya ng mga membership sa grupo ng user. Ang isang bagay na tulad nito ay dapat gumana:

$template = @() Get-Content "C:\groups.txt" | ForEach-Object ($ template[$_] = $false) $groups = @() Get-ADGroup -Filter * | ForEach-Object ($groups[$_.DistinguishedName] = $_.Name ) Get-ADUser -Filter * -Properties MemberOf | ForEach-Object ($groupmap = $template.Clone() $_.MemberOf | ForEach-Object ($groups[$_] ) | Where-Object ($groupmap.ContainsKey($_) ) | ForEach-Object ($groupmap [$_] = $true ) New-Object -Type PSObject -Property $groupmap ) | I-export-Csv "C:\user_group_mapping.csv" -NoType

0

Kanina ko pa ito nilalaro at sa palagay ko nakahanap ako ng paraan para makuha mo kung ano ang hinahangad mo.

Sa tingin ko ay nasa tamang landas si Ansgar, ngunit hindi ko ito magawa kung ano ang sumunod. Binanggit niya na sa oras ng pagsulat ay wala siyang access sa AD environment.

Narito ang naisip ko:

$UserArray = Get-Content "C:\Temp\Users.txt" $GroupArray = Get-Content "C:\Temp\Groups.txt" $OutputFile = "C:\Temp\Something.csv" # Pag-set up ng hashtable para magamit sa ibang pagkakataon $UserHash = New-Object -TypeName System.Collections.Hashtable # Outer loop upang magdagdag ng mga user at membership sa UserHash $UserArray | ForEach-Object( $UserInfo = Get-ADUser $_ -Properties MemberOf # Tinatanggal ang LPAP syntax sa SAMAccountName lang ng grupong $Memberships = $UserInfo.MemberOf | ForEach-Object( ($_.Split(",")) .replace("CN=","") ) #Adding the User=Membership pair to the Hash $UserHash.Add($_,$Memberships) ) #Outer loop to create an object per user $Results = $UserArray | ForEach-Object( # Unang lumikha ng a simpleng bagay$User = New-Object -TypeName PSCustomObject -Property @( Name = $_ ) # Dynamically magdagdag ng mga miyembro sa object, batay sa $GroupArray $GroupArray | ForEach-Object ( #Checking $UserHash para makita kung lumalabas ang grupo sa listahan ng membership ng user $UserIsMember = $UserHash.($User.Name) -naglalaman ng $_#Adding property to object, at value $User | Add-Member -MemberType NoteProperty -Name $_ -Value $UserIsMember ) #Returning the object to the variable Return $User ) #Convert the objects to a CSV, then output them $Results |

Sana may saysay ang lahat. Nagkomento ako sa abot ng aking makakaya. Napakadaling mag-convert sa ADSI kung wala kang naka-install na RSAT sa anumang makina kung saan mo ito pinapatakbo. Kung kailangan mo ito, ipaalam sa akin at gagawa ako ng ilang mabilisang pagbabago.

Magandang hapon po mahal na mga mambabasa at mga subscriber, patuloy naming ginagalugad ang mga kakayahan ng Powershell at Active Directory. Tulad ng naaalala mo, ang lahat ng kanyang user at mga computer account ay matatagpuan sa database ng NTDS.dit, lahat ay mahusay at sentralisado. Kapag ang isang kumpanya ay may higit sa isang system administrator, maaaring magkaroon ng sitwasyon kung saan naipon ang mga basura at hindi kinakailangang mga kredensyal. Tayong lahat ay tao at may mga bagay tayong nakakalimutan, at sa ilang sandali ay maaari tayong magambala, na hahantong din sa pagkalimot mahalagang impormasyon. At dumating kami sa konklusyon na ang Actvie Directory ay hindi maipon aktibong gumagamit(pinapaputok o nakalimutan), sa anumang kaso, ang isang mahusay na tagapangasiwa ng system ay dapat tukuyin ang mga ito, huwag paganahin ang mga ito at pagkatapos ay tanggalin ang mga ito kung nais, na kung ano ang gagawin namin.

Sa pamamagitan ng ADUC snap-in

Huling beses na binigyan kita ng isang halimbawa ng paggamit Aktibong snap-in Mga Gumagamit ng Direktoryo at mga computer, kung saan hinanap namin ang mga nawawalang computer sa lokal na network na hindi lumabas sa loob ng isang buwan. Ngayon ay gagawin namin ang parehong sa mga user account. Mayroon akong AD sa Windows Server 2012 R2, buksan ang ADUC, upang gawin ito pindutin ang WIN+R at ipasok ang dsa.msc.

Sa form ng kahilingan na bubukas, ilagay ang:

  • Humiling ng pangalan > para sa akin ito ay mga nawawalang user
  • Paglalarawan kung kinakailangan
  • Humiling ng root > dito maaari mong iwanan ang buong domain, o tukuyin ito sa gustong OU

Pagkatapos ay i-click ang pindutan ng kahilingan.

Sa tab ng mga user makikita namin ang item na "Bilang ng mga araw mula noong huling pag-log in" halimbawa, itinakda ko ito sa 60 araw.

Bilang resulta, matatanggap mo ang listahan na kailangan mo ng mga hindi aktibong account ng empleyado.

Sa pamamagitan ng powershell snap-in

Ang parehong bagay ay maaaring gawin sa pamamagitan ng Powershell. Ibibigay ko kaagad sa iyo ang code kung kaninong gawain isinasagawa ang paghahanap mga hindi aktibong user, para dito pumili ako ng panahon na 45 araw, hindi pinapagana ang data ng user at lumipat sa isang espesyal na itinalagang OU.

$date_with_offset= (Get-Date).AddDays(-45)
$users = Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | Pagbukud-bukurin LastLogonDate
foreach ($user sa $users) (set-aduser $user -enabled $false; move-adobject -identity $user -targetpath "ou=Fired,ou=Moscow L. users,ou=Location,dc=msk,dc= contoso,dc=com")
Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | Pagbukud-bukurin LastLogonDate | Pangalan ng FT, LastLogonDate -AutoSize | Out-File c:\Script\users.txt

  • Sa unang linya ay nagdedeklara ka ng variable kung saan itinakda mo ang termino para sa paghahanap
  • Gumawa ng variable at gumawa ng pagpili batay sa huling oras ng pag-log in
  • Mga gumagalaw na user

  • Paggawa ng ulat sa isang file

Higit pang mga kapaki-pakinabang na bagay tungkol sa pakikipagtulungan sa user. Bago gamitin ang mga utos sa ibaba, kailangan mong i-load ang module ng Active Directory sa pamamagitan ng command

Get-Help Get-ADUser

Hindi lihim na mula noong unang bersyon ng PowerShell, sinisikap ng Microsoft na gawin itong pangunahing tool sa pangangasiwa ng Windows. At sa maraming paraan ito ay gumagana! Ngayong araw sa mga simpleng halimbawa, ipapakita namin ang mga feature ng PowerShell na magagamit mo para makuha iba't ibang impormasyon tungkol sa mga user ng Active Directory at kanilang mga katangian.

Tandaan. Noong nakaraan, upang makakuha ng impormasyon tungkol sa mga katangian ng AD user account, kailangan mong gumamit ng iba't ibang mga tool: ang ADUC console (kabilang ang), isang utility, atbp. Ang pagpili ng tool ay karaniwang nakabatay sa gawaing nasa kamay at sa mga kakayahan sa programming ng administrator.

Ipinakilala ng PowerShell 2.0 ang isang espesyal na module para sa pagtatrabaho sa Active Directory - (ipinakilala sa Windows Server 2008 R2), na ang mga cmdlet ay nagpapahintulot sa iyo na magsagawa ng iba't ibang manipulasyon sa mga object ng AD directory. Ginagamit ang cmdlet upang makakuha ng impormasyon tungkol sa mga user ng domain ng Active Directory at kanilang mga katangian Get-ADUser. Maaari mong gamitin ang Get-ADUser cmdlet upang makuha ang halaga ng anumang katangian ng isang umiiral nang user account sa AD. Bilang karagdagan, maaari mong tukuyin iba't ibang pamantayan sample at bumuo ng mga listahan ng mga user ng domain at kanilang mga katangian.

Sa halimbawang ito, ipapakita namin kung paano gamitin ang PowerShell Get-ADUser cmdlet upang makakuha ng impormasyon tungkol sa kung kailan huling pagkakataon ang password ng user ay nagbago at kapag ito ay nag-expire.

Ilunsad ang Powershll window na may mga karapatan ng administrator at i-import ang Active Directory module gamit ang command:

Activedirectory ng Import-Module

Payo. Sa Windows Server 2012 at mas mataas, maaari mong laktawan ang item na ito, dahil ang module ng PowerShell Active Directory ay pinagana bilang default.

Sa mga operating system ng kliyente (halimbawa, Windows 10), para gumana ang Get-AdUser commander, kailangan mong i-install ang naaangkop na bersyon ng RSAT at paganahin ang bahagi sa control panel Module ng Active Directory para sa Windows PowerShell(Mga Tool sa Pangangasiwa ng Remote Server -> Mga Tool sa Pangangasiwa ng Tungkulin -> AD DS at AD LDS Tools -> AD DS Tools).

Ang isang kumpletong listahan ng lahat ng Get-ADUser cmdlet argument ay maaaring makuha tulad ng sumusunod:

Tulong sa Get-ADUser

Upang magpakita ng listahan ng lahat ng domain account, patakbuhin ang command:

Get-ADUser -filter *

Ang format ng ibinalik na listahan ay hindi masyadong maginhawang gamitin, ilang pangunahing 10 lamang sa higit sa 120 na katangian at katangian ng mga account ng gumagamit ang ipinapakita (DN, SamAccountName, Pangalan, UPN, atbp.) bilang karagdagan, nakikita namin na mayroong walang impormasyon tungkol sa oras ng huling pagbabago ng password.

Upang ipakita ang kumpletong impormasyon tungkol sa lahat ng magagamit na mga katangian ng user tuser, patakbuhin ang command:

Get-ADUser -identity tuser -properties *

Kaya, nakikita namin ang isang kumpletong listahan ng mga katangian ng gumagamit ng AD at ang kanilang mga halaga na nauugnay sa account ng gumagamit. Susunod, magpapatuloy tayo sa pag-format ng output ng Get-ADUser cmdlet upang maipakita ang mga field na kailangan natin. Interesado kami sa mga katangian:

  • Nag-expire ang Password
  • PasswordLastSet
  • PasswordNeverExpires

Patakbuhin natin ang utos:

Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires

Ngayon ang data ng user ay naglalaman ng impormasyon tungkol sa petsa ng pagbabago ng password at ang oras kung kailan ito mawawalan ng bisa. Ilahad natin ang impormasyon sa isang mas maginhawang tabular form:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Pangalan, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Upang ipakita ang data ng user mula sa isang partikular na OU, gamitin ang parameter SearchBase:

Get-ADUser -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Pangalan, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Ang resulta ng command ay maaaring i-export sa isang text file:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Pangalan, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt

O sa CSV, na maginhawang i-export sa Excel sa hinaharap (bilang karagdagan gamit ang uri-bagay Pagbukud-bukurin natin ang talahanayan ayon sa column na PasswordLastSet, at magdagdag din ng kundisyon saan– ang username ay dapat maglaman ng string na “Dmitry”):

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | kung saan ($_.pangalan –tulad ng “*Dmitry*”) | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | I-export-csv -path c:\temp\user-password-expires-2015.csv

Kaya, maaari kang bumuo ng isang talahanayan na may anumang kinakailangang mga katangian ng gumagamit ng Active Directory.

Upang makakuha ng listahan ng mga AD user account batay sa isang partikular na katangian, gamitin ang –Filter parameter. Bilang mga argumento sa parameter na ito, maaari mong tukuyin ang halaga ng ilang partikular na attribute ng user ng Active Directory, na magiging dahilan upang mailapat ang Get-ADUser cmdlet sa mga user na tumutugma sa pamantayan ng filter.

Output ng mga gumagamit ng AD na ang pangalan ay nagsisimula sa Roman:

Get-ADUser -filter (pangalan -tulad ng "Roman*")

Get-ADUser -Filter (SamAccountName -tulad ng "*") | Sukatin-Bagay

Listahan ng lahat ng aktibong (hindi naka-block) na account sa AD:

Get-ADUser -Filter (Pinagana -eq "True") | Select-Object SamAccountName,Pangalan,Apelyido,GivenName | Format-Table

Listahan ng mga account na may nag-expire na password:

Get-ADUser -filter (Enabled -eq $True) -properties passwordExpired | where($_.PasswordExpired)

Listahan ng mga aktibong account na may mga email address:

Get-ADUser -Filter ((mail -ne "null") -at (Pinagana -eq "true")) -Properties Apelyido,GivenName,mail | Select-Object Name, Apelyido, GivenName, mail | Format-Table

Gawain: Para sa isang listahan ng mga account na naka-store sa text file(isang account sa bawat linya) kailangan mong makuha ang numero ng telepono ng user sa AD at i-upload ang impormasyon sa isang text na csv file (madaling ma-import sa Esxel).

Import-Csv c:\ps\usernsme_list.csv | ForEach ( Get-ADUser -identity $_.user -Properties Name, telephoneNumber | Select Name, telephoneNumber | Export-CSV c:\ps\export_ad_list.csv -Append -Encoding UTF8 )

Ang sumusunod na halimbawa ay nagpapahintulot sa iyo na mag-download ng isang enterprise address book sa form csv file, na maaaring ma-import sa ibang pagkakataon sa Outlook o Mozilla Thunderbird:

Get-ADUser -Filter ((mail -ne "null") -at (Pinagana -eq "true")) -Properties Apelyido,GivenName,mail | Select-Object Name, Apelyido, GivenName, mail | I-export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\mail_list.csv

Mga user na hindi nagbago ng kanilang password sa nakalipas na 90 araw:

$90_Days = (Get-Date).adddays(-90) Get-ADUser -filter ((passwordlastset -le $90_days))

$user = Get-ADUser winadmin -Properties thumbnailPhoto $user.thumbnailPhoto | Set-Content winadmin.jpg -Pag-encode ng byte

Listahan ng mga grupo kung saan siya nabibilang account gumagamit

Get-AdUser winadmin -Properties memberof | Pumili ng memberof -expandproperty memberof