niedziela, 24 lutego 2013

Windows 2008 Serwer - Tworzenie użytkowników przy pomocy PowerShell(70-640) cz.4

W poprzednim wpisie pokazałem jak przy pomocy poleceń wpisywanych w konsoli można utworzyć użytkownika w AD. Dziś nieco informacji na temat PowerShella.

Na początek oczywiście musimy zainstalować PowerShell'a w MS Windows 2008 Server. Otwieramy kolejno: Menedżer Serwera ( Server Manager ) -> Funkcje ( Features ) -> Dodaj funkcję ( Add Features) -> Wybieramy PowerShell klikamy na Dalej ( Next ) -> Zainstaluj (Install ) -> Zamknij ( Close )


1) Utworzenie nowego konta przy pomocy PowerShell:

Na początek musimy poprzez PowerShell podłączyć się obiektowo do naszego Active Directory:

$objOU=[ADSI]"LDAP://OU=Employees,DC=example,DC=com"

Zmienna oznaczana jest poprzez $, LDAP jest protokołem pozwalającym na łączenie się z DA, dalej wskazujemy jednostkę organizacyjną w której utworzymy konto, oraz naszą domenę.

Przy pomocy Create utworzymy nowego użytkownika w naszej jednostce organizacyjnej:

$objUser=$objOU.Create("user","CN=Jan Kowalski")

Do zmiennej $objUser przypisujemy informacje ze zmiennej $objOU wraz z parametrami user (czyli tworzymy użytkownika, a nie np. grupę) oraz nazwę tego użytkownika.

Następnie musimy dodać informacje pozwalającą do logowania się do systemów starszych niż MS 2000:

$objUser.Put("sAMAccountName","jan.kowalski") 

Musimy zatwierdzić zmiany:

$objUser.SetInfo()

Aby ustawić hasło wydajemy polecenie ( zawsze po SetInfo() ):

$objUser.SetPassword("naszehaslo")

Możemy nasze nowe konto włączyć lub wyłączyć ( odpowiednio: $true / $false ):

$objUser.psbase.InvokeSet("AccountDisabled", $true / $false )
$objUser.SetInfo()

Powinniśmy w AD w jednostce Employees ( lub innej która mamy ) zobaczyć utworzone konto. 

Konto możemy również założyć analogicznie przy pomocy VBS:

Set objOU=GetObject("LDAP://OU=Employees,DC=example,DC=com")
Set objUser=ObjOU.Create("user","CN=Jan Kowalski")
$objUser.Put "sAMAccountName","jan.kowalski" 
$objUser.SetInfo()

Skrypt zapisujemy z rozszerzeniem .vbs i gotowe, wystarczy kliknąć 2x na plik konto zostanie utworzone.


Jeżeli nie chcemy ręcznie, ciągle wykonywać tych samych czynności możemy przygotować plik .csv, w którym umieścimy podstawowe informacje o naszych użytkownikach, po czym wykonamy prosty skrypt który doda ich do DA:

W oddzielnych kolumnach wpisujemy kolejno nazwy identyfikujące konta:




Plik z danymi zapisujemy na dysku C:\ jako usersToBeCreated.csv. Następnie w PowerShell'u wpisujemy:

import-module activedirectory 
$inputFile = Import-CSV  C:\usersToBeCreated.csv

foreach($line in $inputFile) 

new-aduser -SamAccountName $line.UserName -Name $line.FullName -AccountPassword (ConvertTo-SecureString -AsPlainText "Password" -Force) -Enabled $true -Path "OU=Employees,DC=example,DC=com" -DisplayName $line.FullName -GivenName $line.FirstName -Surname $line.SurName -UserPrincipalName $line.UserPrincipalName -ChangePasswordAtLogon $True 


Zapisujemy go jako addNewUsers.ps1, następnie musimy włączyć możliwość wykonywania skryptów w Windows PowerShell. Przechodzimy na dysk C:\ (cd C:\), następnie set-executionpolicy remotesigned. Następnie wykonujemy skrypt: .\addNewUsers.ps1.

Możemy również napisać to nieco inaczej:

W pliku NewUsers.csv, dodamy:


cn,sAMAccountName,FirstName,LastName
John Woods,john.woods,Johnathan,Woods
Kim Akers,kim.akers,Kimberly,Akers

W pliku userimport.ps1 dodamy:


$objOU=[ADSI]"LDAP://OU=Emplyees,DC=example,DC=com"
$dataSource=import-csv "userimport.csv"
foreach($dataRecord in $dataSource) 
{
    #mapowanie zmiennych na dane 
    $cn=$dataRecord.cn
    $sAMAccountName=$dataRecord.sAMAccountName
    $givenName=$dataRecord.FirstName
    $sn=$dataRecord.LastName
    $displayName=$sn + ", " + $givenName
    $userPrincipalName=$givenName + "." + $sn + "@example.com"
    
    #tworzymy nowych użytkowników na podstawie .csv

    $objUser=$objOU.Create("user","CN="+$cn)
    $objUser.Put("sAMAccountName",$sAMAccountName)
    $objUser.Put("userPrincipalName",$userPrincipalName)
    $objUser.Put("displayName",$displayName)
    $objUser.Put("givenName",$givenName)
    $objUser.Put("sn",$sn)
    $objUser.SetInfo()
    $objUser.SetPassword("P@ssword")
    $objUser.psbase.InvokeSet("AccountDisabled",$false)
    $objUser.SetInfo()
    }


Skrypt uruchamiamy podobnie jak jest to opisane wyżej.

2.Zarządzanie atrybutami konta użytkownika przy pomocy Dsquery:

Wyłączenie konta oraz zmiana opisu miasta na Warszawę, w którym pracować będzie dana osoba:

dsquery user -name "* Kowalski" | dsmod user -office "Warsaw" -disabled yes 

Ponowne włączenie konta użytkownika Kowalski przy pomocy PowerShell'a:

$objUser=[ADSI]"LDAP://CN=Jan Kowalski,OU=Ludzie,DC=contoso,DC=com"
$objUser.psbase.InvokeSet('AccountDisabled',$false)
$objUser.SetInfo()











Brak komentarzy:

Prześlij komentarz