2020. október 29., csütörtök

PowerShell kezőknek 3. rész

Sziasztok

A mindennapi üzemeltetés során nem csak lekérdezések fordulnak elő, hanem keresések is. Erre való a Search-ADAccount. Ez valamivel univerzálisabb is tud lenni(de csak bizonyos szintig!), mint az elöző részben mutatott Get-ADUser, vagy a Get-ADComputer parancs.
Példa:
Kérdezzük le az összes letíltott accuntot objektumtípus szerint rendezve:
Search-ADAccount -AccountDisabled |Sort-Object ObjectClass | ft Name,ObjectClass -AutoSize
Ezzel a kereséssel (majdnem) mindenfajta objektum körül keresünk és kilistázzuk.

Idáig a PowerShell ismertetése a lekérdezések alapján mutattam be. Nagy kárt nem is tehettünk a rendszerben.
Most viszont már állítani fogunk, méghozzá "tömegesen".

A mai napig azt állítom, hogy egy új felhasználó felvételét még mindig kifizetődőbb GUI-n keresztül felvinni különösen, ha jó sok paramétert kell megadni. Még talán 3-5 emberkénél is, de 10 felhasználónál bizony a PowerShell jobb választás, mert gyorsabb, és kisebb a hibalehetőség.

De ne szaladjunk nagyon előre. Most a megismert kamilla csoport tagjai tulajdonságain fogunk módositani, összehasonlítani, törölni.

Elékeztetőül:
Van egy kamilla nevü csoport.
Tagok:
Világos János                                                                                                          
Vezér Gábor                                                                                                            
Szürke Lajos                                                                                                           
Sötét Kálmán                                                                                                           
Sárga Irén                                                                                                             
Sámán Ubul                                                                                                             
Kakukk Marci


Legyen egy olyan eset, hogy a csoport leköltözik a földszintre most a padláson vannak ellenőrizzük is le:
Get-ADGroupMember kamilla | Get-ADUser -Properties office | ft name, office -AutoSize
name                   office
----                     ------
Világos János       Padlás
Sötét Kálmán       Padlás
Sámán Ubul         Padlás
Vezér Gábor        Padlás
Szürke Lajos        Padlás
Sárga Irén            Padlás
Kakukk Marci     Padlás

Tényleg ott vannak, viszont most legyenek az Emeleten:
Get-ADGroupMember "kamilla" | Set-ADUser -Office "Emelet"
Ennél egyszerűbb tömeges módosítás szerintem nem is létezik. J

Mit is tettem? Lekértem a kamilla csoport tagjait majd továbbküldtem feldolgozásra, ahol azt kértem, hogy az Office legyen Emelet. Ennyi és nem több. Ha ezt módositani szeretnénk, akkor elegendő a parancsot újra futtatni, és a macskakörmök helyéra beírni az új értéket. Szépen felülírja.

Lehetett volna elegánsabban is módosítani, de mindig törekedjünk az egyszerűségre, ha lehet Láttam olyan PowerShell parancsot, ami lényegében ugyanezt a műveletet hajtotta vére, csak éppen három sorból állt.

Ellenőrzésképpen kérdezzük le megint:
Get-ADGroupMember kamilla | Get-ADUser -Properties office | ft name, office -AutoSize
name                office
----                  ------
Világos János    Emelet
Sötét Kálmán    Emelet
Sámán Ubul      Emelet
Vezér Gábor     Emelet
Szürke Lajos     Emelet
Sárga Irén         Emelet
Kakukk Marci  Emelet

A csoport központi telefonszáma megváltozott hát azt is módosítsuk meg:
Get-ADGroupMember 'kamilla' | Set-ADUser -OfficePhone "123498765"
Ennyi és nem több!!

Egy tanács:
SET parancs kiadásával óvatosan és átgongoltan bánjunk.
A változtatásokat nagyon nehéz visszaállítani, ezért ha valaki nem biztos magában, akkor egy tesztrendszeren gyakoroljon!

Törölni kellene az Office mező tartalmát:
Get-ADGroupMember kamilla | Set-ADUser -Clear physicalDeliveryOfficeName
Itt vigyázzunk, hogy az attribute név kell. Az Office mező neve pl. a physicalDeliveryOfficeName!Legegyszerűbben úgy lehet megnézni, ha nem tudjuk mi a pontos név, hogy fogunk egy ADUC-ot és az Attribute Editor fülön megnézzük. :)



Mondjuk nem értem, az a PowerShell logikát, hogy miért enged felvenni Office néven, törölni pedig Attribute hivatkozás alapján. Ezt meg kell szokni, vagy figyelmesen kell(ene) olvasni a help-et...:) De ez legyen a legnagyobb gondunk.

dsf



2012. április 18., szerda

Mentés-visszaállítás

Sziasztok

Végre sikerült a Microsoftnak egészen jó beépített mentő szoftvert készítenie.(WINDOWS 2008 R2)
Természetesen napi full mentés van minden szervernek beállítva. Az egyik virtuális gépünk, hogy miért az most lényegtelen, de teljesen megadta magát. Metésből 2 óra alatt sikerült visszaállítani, és mindenki boldog.
Ami meglepett, hogy nem volt egyáltalán bonyolult a visszaállítási procedúra, hanem szinte next-next-finis módszerrel el lehett intézni a dolgot. Végre az üzemeltetőkre is gondoltak, hogy ne kelljen mindenféle "agyműtétes, berhelős" megoldásokhoz nyúlni, ha gond van.

2012. április 17., kedd

PowerShell kezdőknek 2. rész

Sziasztok

Mint ígértem az előző írásomból most összetettebb lekérdezéseket fogok mutatni.
Maradjunk még egyenlőre a Get-ADUser parancsnál.

A példák kedvéért létrehoztam az AD-ban egy külön csoportot.
Majd hét felhasználót:
Világos János                                                                                                          
Vezér Gábor                                                                                                            
Szürke Lajos                                                                                                           
Sötét Kálmán                                                                                                           
Sárga Irén                                                                                                             
Sámán Ubul                                                                                                             
Kakukk Marci

A csoport neve kamilla lett.

A kollégám megkérdezte: Imre miért lett kamilla a csoport neve?
A válaszom:  Fogalmam sincs, de épp kamillateát szürcsöltem a megfázásomra......

Játszadozzunk velük:
1. Listázzuk ki Vezér Gábor beosztottjait:
Get-ADUser -Filter { manager -eq "vezer" } | select name
A kimenetként ezt kapjuk:

2.A lekérdezés az jó lett, de nem igazán szép. Szeretnénk ha a nevek ABC sorrendben jelenjenek meg, akkor:
Get-ADUser -Filter {manager -eq "vezer"} | select name | Sort-Object name
Azért így már csak szebb, mert a kimenetet nem írattam ki azonnal a képernyőre, hanem még továbbküldtem feldolgozásra, hogy 'name' mező szerint rendezze.

3. Listázzuk ki az "S" betűvel kezdődő felhasználókat, akiknek a Vezér Gábor a főnökük, és csak a nevükre vagyunk kíváncsiak. A többi információ most nem kell. Get-ADUser -Filter {( name -like "s*") -and (manager -eq "vezer")} | select name |  Sort-Object name.


Itt már csak kettő felhasználónk maradt, akik ezeket a feltételeket teljesítették.
Ez az első olyan lekérdezés, ami már összetettnek mondható, mert itt már két feltétel volt megadva.

4. Az elöző lekérdezésünk eredményét szeretnénk exportálni, természetesen azt is megtehetjük, akkor:
Get-ADUser -Filter {( name -like "s*") -and (manager -eq "vezer")} | select name |  Sort-Object name | ConvertTo-Csv | Out-File c:\temp\vezerg_beosztott.csv
Az eredmény most nem írodott ki a képernyőre, hanem megtalálható a Temp könyvtárunkban.

Mielőtt tovább mennék lekérdezést részletezném.
A., Get-ADUser -Filter  { ide írom be a szűrőfeltételt }
B., ( szűrőfeltétel 1 ) -és ( szűrőfeltétel 2 ) Látható, hogy ezeket sima zárójelekbe tettem.
C. Természetesen név szerint rendezve
DÉs a legvégén konvertáljuk, és elmentjük a megfelelő helyre.
Ha fordított ABC sorrendet szeretnénk listázni, akkor a Sort-Object name után a -Desc kapcsolóval lehet megtenni.

Ennél bonyolultabb lekérdezés ritkán kellenek a napi életben. Kifizetödőbb ha az ember szrikpt írásába fog. De azt később.

Pár példa, amit folyamatosan bővíteni fogok.:
Csoport tagokról infók:
Kérdezzük le a kamilla nevű csoport tagjait:
Get-ADGroupMember kamilla | select name | Sort-Object name 
Kérdezzük le a tagokat, de a manager neve is szerepeljen a képernyőn:
Get-ADGroupMember kamilla | Get-ADUser -Properties manager | select name, manager
Vagy másféleképpen:
Get-ADGroupMember kamilla | Get-ADUser -Properties * | Format-Table name, manager -AutoSize
Az eredményünk ugyanaz lett, de egy picit rendezettebb formában.
Listázzuk ki a kamilla csoport tagjait és milyen irodában (Office mező)vannak nyílvántartva az AD szerint:
Get-ADGroupMember kamilla | Get-ADUser  -Properties office  | select name, office

Most azt is megtehetnénk, hogy egyenként végigkattintgatunk, és leellenőrizzük, de egyszerű parancs beadásával sok időt takaríthatunk meg. Ha valaki véletlenül nem jó helyen van nyílvántartva azt nagyon egyszerűen meg is tudjuk változtatni. A következő rész erről (is)fog szólni.


Számítógépekről infók:

Keressünk számítógépeket, akik január 1. óta nem jeletkezett be:
Get-ADComputer -Filter {Lastlogondate -le "2012.01.01"} | select name
Szépen ki fogja listázni őket.

Annyit fűznék hozzá, hogy a szerverek az angol, de a területi beállítások az magyar, amin a lekérdezéseket tettem. Ezért a dátumformátum egyes gépeknél eltérő lehet!
Kellenének a gépek IP cimei tájékoztató jelleggel!:
Get-ADComputer -Filter * -Properties IPv4Address | select name,IPv4Address
Windows XP-s gépekről egy lista:
Get-ADComputer -Filter {OperatingSystem -eq "Windows XP Professional"} -Properties * | select name,OperatingSystem
Ugyaez, de SP infó is kellene: (Mennyire vagyunk elmaradva :) )
Get-ADComputer -Filter {OperatingSystem -eq "Windows XP Professional"} -Properties * | select name,OperatingSystem,OperatingSystemServicePackget

Felhasználókról infók:

Letíltott felhasználókról lista:
Get-ADUser -Filter {enabled -eq "False"} | select name
Akiknek soha nem jár le a jelszavuk:
Get-ADUser -Filter {PasswordNeverExpires -eq "True"} | select name
Lejárt jelszóval rendelkező fiók:
Get-ADUser -Filter {AccountExpirationDate -le "2012.04.20"} | select name
A dátumhoz természetesen az aktuális időpontot kell beírni!
Van olyan emberke, akinek nincs email-címe?:
Get-ADUser -Filter {EmailAddress -notlike "*"} | select name

Csoport infók:
Az összes csoport listája:
Get-ADGroup -filter * | select name
Az összes "B" betűvel kezdödő csoport listája:
Get-ADGroup -Filter { name -like "b*"} | select name


Nagyon sok lekérdezést másképpen is le lehetett volna kérdezni, ez már csak szokás kérdése, hogy melyiket használjuk. A következő részben mutatok is rá példát.

Források tudjátok amiből tanulgato:
- Elsők között megemlítem Soós Tibor könyvét! Köszönet neki!
Egyszerűen baromi jó, érthető  könyv, és egy kezdő emberke számára, aki most ízlelgeti a PowerShell-t, annak kiváló indulási alap.
- Powershell saját help-je.
- Microsoft technet.
- És természetesen az internet.
A következő részben  a keresés lesz az egyik téma, és már állítgatni fogjuk a felhasználókat, de most "tömegesen", mert ugyebár egyenkénti kattintgatásra ott a GUI.