Scheduled Tasks i gMSA

gMSA objekt

gMSA (Group Managed Service Account) objekti dobrodošla su novost uvedena u Windows Server 2012. Logičan su slijed od MSA (Managed Service Account) uvedenih u Windows Server 2008 R2. Najveća razlika između MSA i gMSA je što se gMSA objekti mogu koristiti na više računala u odnosu na MSA koji se mogao koristiti na jednom računalu. gMSA objekti mogu se koristiti za pokretanje servisa, pokretanje scheduled taskova, za izvršavanje IIS App Pollova, itd. Ovaj post se neće baviti detaljima gMSA pa više o navedenom možete pronaći ovdje: https://technet.microsoft.com/en-us/library/hh831782(v=ws.11).aspx

Velik je broj članaka vezan za gMSA i Scheduled Taskove, međutim dvije vrlo bitne stavke nedostaju u svim tim člancima. Definiranje radnog foldera (WorkingDirectory) te stupnja kompatibilnosti (Win8).

Kreiranje Scheduled Taska

U svojim cmdletima preferiram parametrizaciju te iz tog razloga su sve postavke u varijablama. Prvi korak je definiranje naziva Scheduled Taska

[powershell]$taskName = "My Scheduled Task"[/powershell]

Zatim se definira varijablu za opis Scheduled Taksa (koristite opise, pokažu se vrlo korisni)

[powershell]$taskDescription = "Runs my daily script"[/powershell]

Zatim se definira okidač koji će pokrenuti Scheduled Task. U ovom primjeru to je svaki dan u 08:00 sati.

[powershell]$taskTrigger = New-ScheduledTaskTrigger -Daily -At 08:00[/powershell]

Definicija izvršavanja određuje se slijedećom naredbom. Vrlo je bitno definirati WorkingDirectory jer u protivnom će se Scheduled Task izvršiti u “C:\Windows\System32” ili u nekim slučajevima u “C:\Windows\Temp”

[powershell]$taskAction = New-ScheduledTaskAction -Execute "C:\Scripts\PowerShell\Start-MyScript.ps1" -WorkingDirectory "C:\Scripts\PowerShell\"[/powershell]

Slijedeći korak je kritičan zato što se incijalno Scheduled Task postavlja u Win7 mod pod kojim se gMSA ne izvršava!

[powershell]$taskSettings = New-ScheduledTaskSettingsSet -Compatibility Win8[/powershell]

Zadnji parametar je definiranje korisničkog računa pod kojim se Scheduled Task pokreće a u ovom slučaju to je gMSA. Ne zaboravite znak “$” na kraju UserID paramtera (gMSA je kombinacija korisničkog i računalnog objekta AD-a). Postavka “Password” parametra “LogonType” definira način razmjene lozinke između računala i AD poslužitelja.

[powershell]$taskPrincipal = New-ScheduledTaskPrincipal -UserId "CONTOSO\mygmsa$" -LogonType Password[/powershell]

Zadnji korak je samo kreiranje Scheduled Taska.

[powershell]Register-ScheduledTask -TaskName $taskName -Description $taskDescription -Trigger $taskTrigger -Action $taskAction -Settings $taskSettings -Principal $taskPrincipal[/powershell]

Bitne napomene

  • gMSA objekt mora biti “instaliran” na računalu gdje će se koristiti (Install-ADServiceAccount)
  • gMSA objektu mora biti dodijeljeno gdje ima mogućnost korištenja (New-ADServiceAccount ili Set-ADServiceAccount, parametar PrincipalsAllowedToRetrieveManagedPassword, koristite grupe zbog jednostavnijeg naknadnog održavanja)
  • gMSA radi isključivo na Windows Server 2012 na više
  • gMSA objekt mora imati privilegiju “Log on as a Batch Job”
  • gMSA objekt mora imati adekvatna prava na WorkingDirectory folder
  • gMSA objekt mora imate adekvatna prava u odnosu na ono što se izvršava pod tim kroisničkim računom (npr. zapisivanje u foldere, prava na bazama, itd)

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.