Objektumok módosítása

Az objektumok módosításánál már jobban kihasználható a PowerShell előnye, azaz a csövezés. Ugyanis általában a módosítás csővezetéke egy szűrési szakaszból és egy módosítási szakaszból áll össze. Nézzük meg a módosítás néhány specialitását:

[1] PS C:\> Get-ADUser -Filter {name -like "nagy i*"} | Set-ADUser -Description

 "Módosítás"

[2] PS C:\> Get-ADUser -Filter {name -like "nagy i*"} -prop description| Format

-Table name, description

 

name                                    description

----                                    -----------

Nagy Ildikó                             Módosítás

Nagy István                             Módosítás

Ez az egyik fajta módosítási lehetőség. A Get-ADUser résszel szűrök, majd ezt a csővezetéken átadom a Set-ADUser cmdletnek. Fontos, hogy a Set-ADUser  önmagában képes a csővezetékből felszedni a paramétereit, nem kell Foreach-Object cmdletet használni. A fenti példában a –Description tulajdonságát módosítottam a felhasználóknak. Ez olyan gyakran használatos tulajdonság, hogy maga a Set-ADUser cmdletnek létrehoztak ilyen paramétert. De mi van akkor, ha olyan tulajdonságot akarunk módosítani, amelyik nincsen kivezetve paraméterként? Elsőként nézzük meg, hogy mi az amit „gyárilag” tud a Set-ADUser:

[5] PS C:\> (get-help Set-ADUser).parameters.parameter | ft name

 

name

----

AccountExpirationDate

AccountNotDelegated

Add

AllowReversiblePasswordEncryption

AuthType

CannotChangePassword

Certificates

ChangePasswordAtLogon

City

Clear

Company

Country

Credential

Department

Description

DisplayName

Division

EmailAddress

EmployeeID

EmployeeNumber

Enabled

Fax

GivenName

HomeDirectory

HomeDrive

HomePage

HomePhone

Identity

Initials

Instance

LogonWorkstations

Manager

MobilePhone

Office

OfficePhone

Organization

OtherName

Partition

PassThru

PasswordNeverExpires

PasswordNotRequired

POBox

PostalCode

ProfilePath

Remove

Replace

SamAccountName

ScriptPath

Server

ServicePrincipalNames

SmartcardLogonRequired

State

StreetAddress

Surname

Title

TrustedForDelegation

UserPrincipalName

Confirm

WhatIf

Ezek közül néhány nem AD tulajdonság módosítására való paraméter (vastagon szedtem ezeket), közülük a következők alkalmasak általánosan tulajdonságok módosítására: Add, Clear, Remove, Replace.

[13] PS C:\> Get-ADUser -Filter {name -like "nagy i*"} | Set-ADUser -replace @{

othertelephone = 1234; description = "másik módszer"}

[14] PS C:\> Get-ADUser -Filter {name -like "nagy i*"} -prop description, other

telephone| Format-Table name, description, othertelephone

 

name                       description               othertelephone

----                       -----------               --------------

Nagy Ildikó                másik módszer             {1234}

Nagy István                másik módszer             {1234}

Látható, hogy értékadás célzattal a –Replace paraméternek egy hashtáblát adtam meg, melyben az AD attribútumnevek vannak kulcsként és az értékük értékként. Az –Add paraméter un. „multivalued” tulajdonságoknál használható újabb érték hozzáadásakor. A Description az nem „multivalued”, de az OtherTelephone az igen. A –Remove-val ilyen „multivalued” tulajdonságokból lehet értékeket elvenni:

[15] PS C:\> Get-ADUser -Filter {name -like "nagy i*"} | Set-ADUser -add @{othe

rtelephone = "újszám"}

[16] PS C:\> Get-ADUser -Filter {name -like "nagy i*"} -prop description, other

telephone| Format-Table name, description, othertelephone

 

name                       description               othertelephone

----                       -----------               --------------

Nagy Ildikó                másik módszer             {újszám, 1234}

Nagy István                másik módszer             {újszám, 1234}

 

 

[17] PS C:\> Get-ADUser -Filter {name -like "nagy i*"} | Set-ADUser -remove @{o

thertelephone = "1234"}

[18] PS C:\> Get-ADUser -Filter {name -like "nagy i*"} -prop description, other

telephone| Format-Table name, description, othertelephone

 

name                       description               othertelephone

----                       -----------               --------------

Nagy Ildikó                másik módszer             {újszám}

Nagy István                másik módszer             {újszám}

A [15]-ös sorban a kiszűrt felhasználóimnak adtam egy-egy újabb telefonszámot, a [17]-es sorban meg elvettem tőlük a régebbit.

A –Clear paraméterrel lehet AD tulajdonságokat törölni, $null érték adásával ne próbálkozzunk, hibát fog adni:

[19] PS C:\> Get-ADUser -Filter {name -like "nagy i*"} | Set-ADUser -clear othe

rtelephone

[20] PS C:\> Get-ADUser -Filter {name -like "nagy i*"} -prop description, other

telephone| Format-Table name, description, othertelephone

 

name                       description               othertelephone

----                       -----------               --------------

Nagy Ildikó                másik módszer             {}

Nagy István                másik módszer             {}

Itt természetesen nem hashtáblát kell megadni a –Clear értékeként, hanem csak az attribútumneveket.

Harmadik módja az AD objektumok tulajdonságértékeinek megváltoztatásának a közvetlen értékadás:

[26] PS C:\> $u = Get-ADUser acsbela -Properties department

[27] PS C:\> $u | Format-Table name, department

 

name                                    department

----                                    ----------

Ács Béla                                Beszerzés

 

 

[28] PS C:\> $u.Department = "Sóhivatal"

[29] PS C:\> Set-ADUser -Instance $u

[30] PS C:\> Get-ADUser acsbela -Properties department | Format-Table name, dep

artment

 

name                                    department

----                                    ----------

Ács Béla                                Sóhivatal

A [26]-os sorban kiolvasom a felhasználót a „department” tulajdonságával együtt és berakom a $u változóba. A [27]-es sorban látszik, hogy ő a „Beszerzés” nevű osztályon dolgozik. A [28]-as sorban a  $u változó Department tulajdonságának új értéket adok. Ez a művelet a memóriában, a $u változóban jön csak létre, magában az AD adatbázisban nem. Ahhoz, hogy ez beíródjon a címtárba is, ehhez szükséges volt a [29]-es sorban a  művelet „kommittálása”, amit a Set-ADUser-rel tettem meg.

Figyelem! Itt a paraméter az ‑Instance volt, nem az –Identity! Bár az ‑Identity-vel is lefut a parancs, de ekkor tényleges végrehajtás nem történik.

Ezzel a harmadik módszerrel a multivalued tulajdonságokat legkényelmesebben az Update‑List cmdlet segítségével tudjuk módosítani:

[39] PS C:\> $u = Get-ADUser acsbela -Properties othertelephone

[40] PS C:\> $u

 

 

DistinguishedName : CN=Ács Béla,OU=csaba,DC=r2,DC=dom

Enabled           : True

GivenName         : Ács

Name              : Ács Béla

ObjectClass       : user

ObjectGUID        : 56419e7c-211c-41eb-80fb-c5be5d82b217

SamAccountName    : acsBela

SID               : S-1-5-21-3398938913-3940250523-927435294-1607

Surname           : Béla

UserPrincipalName : acsBela@r2.dom

 

 

 

[41] PS C:\> $u.othertelephone = "egy"

Álljunk meg egy szóra! Látható a [40]-es sor kimenetében, hogy alaphelyzetben nincs is az $u változónak othertelephone tulajdonsága, mégis sikeres az értékadás a [41]-es sorban!

Folytassuk akkor az Update-List alkalmazásával:

[42] PS C:\> $u | Update-List -Add "másik" -Property othertelephone

 

 

DistinguishedName  : CN=Ács Béla,OU=csaba,DC=r2,DC=dom

Enabled            : True

GivenName          : Ács

Name               : Ács Béla

ObjectClass        : user

ObjectGUID         : 56419e7c-211c-41eb-80fb-c5be5d82b217

othertelephone     : {egy, másik}

PSShowComputerName : {}

SamAccountName     : acsBela

SID                : S-1-5-21-3398938913-3940250523-927435294-1607

Surname            : Béla

UserPrincipalName  : acsBela@r2.dom

WriteErrorStream   : {}

 

 

 

[43] PS C:\> Set-ADUser -Instance $u

[44] PS C:\> Get-ADUser $u -Properties othertelephone | ft name,othertelephone

 

name                                    othertelephone

----                                    --------------

Ács Béla                                {másik, egy}

Természetesen az Update-List összes lehetőségét ki tudjuk itt használni, az Add-on kívül a Replace vagy Remove-ot is.



Word To HTML Converter