Blog

PowerShell ile SCCM için Özel Görev Oluşturma

İlk yazıda uygulama ve paket hazırlamak için genel bilgileri paylaşmıştık. Daha sonra MSI, EXE, CMD ve PS Betik dosyaları kullanarak birer uygulama ve sonunda da 1 adet Paket hazırlamıştık. Faydalı olabilecek betiklerden bahsettik. Daha sonra, cihaz koleksiyonu oluşturduk.

Bu yazıda da, “Özel Görev Sıraları / Custom Task Sequences” oluşturalım.

İlk yazıda bahsettiğimiz biçimde “ConfigManager” modülü yüklü ve yönetici yetkili bir PS konsolu açınız.

ilk olarak, “PowerShell Ornek GorevS” isimli bir “Özel Görev Sıraları / Custom Task Sequences” oluşturalım, sadece birer örnek adım, sırasının hiç bir önemi yok.

$TS = New-CMTaskSequence -CustomTaskSequence -Name "PowerShell Ornek GorevS" -IconLocationFile "\\sunucu_adiniz\Deployment\Simgeler\Firma_Logo.png"

$TS, değişkenini sonraki komutlar ile de kullanacağız.



Klasör oluştururarak başlayalım:

$Klasor01 = New-CMTaskSequenceGroup -Name "Klasor 01"
Add-CMTaskSequenceStep -InsertStepStartIndex 0 -TaskSequenceName $TS.Name -Step $Klasor01

“Klasor 01” içerisine bir adet, “Komut Satırını Çalıştır / Run Command Line” adımı ekleyelim:

$adim01 = New-CMTaskSequenceStepRunCommandLine -StepName "Komut calistir 01 - Bekle" -CommandLine "cmd.ex_e /c start /wait cmd.ex_e"

# "cmd.ex_e"ler içerisindeki "_" alt çizgileri kaldırmayı unutmayınız.

Set-CMTaskSequenceGroup -TaskSequenceName $TS.Name -StepName $Klasor01.Name -AddStep $adim01 -InsertStepStartIndex 0

Bu arada, yukarıdaki “Bekle” örneğini, İşletim Sistemi kurulumu (OSD) aşamasında, v.b. test etmek istediğiniz, sonuçlarını görmek istediğiniz bir aşamadan sonra kullanırsanız, cmd komut satırı açılarak “Görev Sıraları / Task Sequences” kesintiye uğrayacak, beklemeye başlayacak, siz işleminizi bitirip, “Exit” komutu ile pencereyi kapattığınızda, kaldığı yerden devam edecektir.

İkinci bir komut satırı ile bu sefer sadece bilgi veren bir pencere gösterelim.

Önce, “Klasör 02” oluşturalım:
$Klasor02 = New-CMTaskSequenceGroup -Name "Klasor 02"
Add-CMTaskSequenceStep -InsertStepStartIndex 1 -TaskSequenceName $TS.Name -Step $Klasor02

Bir adet “Powershell Bilgi Penceresi” adımını ekleyelim:
$adim02 = New-CMTaskSequenceStepRunCommandLine -StepName "Powershell Bilgi Penceresi" -CommandLine "powershell.exe -ep bypass -command (new-object -ComObject Microsoft.SMS.TsProgressUI).CloseProgressDialog() ; (new-object -ComObject wscript.shell).Popup('Bilgilendirme notunu buraya yazınız....',0,'Onay Penceresi',0x0 + 0x30) ; Exit 0"

Set-CMTaskSequenceGroup -TaskSequenceName $TS.Name -StepName $Klasor02.Name -AddStep $adim02 -InsertStepStartIndex 0

Yukarıda örnekte, powershell komutu. CMD aracılığıyla çalıştırdık.

Bu sefer doğrudan “Powershell Betiği Çalıştır / Run Powershell Script” adımı ile bir PS betik çalıştıralım.

Bu betik örneği, özellikle İşletim Sistemi kurulumu (OSD) aşaması sonunda, makinada takılı ek formatsız disk(ler)i biçimlendirmek için kullanılabilinir.

Önce “Klasör 03” ekleyelim:
$Klasor03 = New-CMTaskSequenceGroup -Name "Klasor 03 - PS Betik"
Add-CMTaskSequenceStep -InsertStepStartIndex 2 -TaskSequenceName $TS.Name -Step $Klasor03

içerisine PS Betik çalıştırma adımını ekleyelim:

$adim04=New-CMTSStepRunPowerShellScript -Name "Run PowerShell Script (Bos diskleri bicimlendirme)" -Description "RAW diskler NTFS olarak bicimlendirilecek" -SourceScript "#" -ExecutionPolicy Bypass

Burada, komut satırından betiğin tamamını eklemek zor olacağı için “-SourceScript” için sadece “#” değeri kullanarak komutu oluşturuyoruz, bir sonraki aşamada, PS dosya kullanarak betiğin tamamını ekleyeceğiz.

Set-CMTaskSequenceGroup -TaskSequenceName $TS.Name -StepName $Klasor03.Name -AddStep $adim04 -InsertStepStartIndex 0

Kontrol edelim:

get-CMTSStepRunPowerShellScript -TaskSequenceName $TS.Name | format-table -a name

şimdi betiği, “Run PowerShell Script (Bos diskleri bicimlendirme)” adımının içerisine ekleyelim:

$betikdosya = get-content "c:\temp\disk_hazirlama.ps1" -raw
set-CMTSStepRunPowerShellScript -TaskSequenceName $TS.Name -StepName "Run PowerShell Script (Bos diskleri bicimlendirme)" -SourceScript $betikdosya

Örnek Betik: disk_hazirlama.ps1 içeriği:

## <https://www.recastsoftware.com/resources/configmgr-docs/task-sequence-basics/task-sequence-steps/disks/format-and-partition-disk/>
#Get RAW Disks and Format$RAWDisks = get-disk | Where-Object {$_.PartitionStyle -eq "RAW"}

foreach ($Disk in $RAWDisks)#{}   
{   
$Size = [math]::Round($Disk.size / 1024 / 1024 / 1024)   
Initialize-Disk -PartitionStyle GPT -Number $Disk.Number   
New-Partition -DiskNumber $Disk.Number -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "DATA-$($size)GB" -Confirm:$false   
}
 

Bu görev sırasını “Test Kurulum” isimli cihaz koleksiyonu ile USB ya da PXE boot aracılığıyla denemek isterseniz, bir koleksiyona dağıtmak için:

New-CMTaskSequenceDeployment -TaskSequencePackageId (Get-CMTaskSequence -fast -name $TS.Name).PackageID -CollectionName "Test_Kurulum" -DeployPurpose Available -ShowTaskSequenceProgress $true -Availability ClientsMediaAndPxe -DistributionPointName "sunucu_adiniz.etkialani.com.tr"

Hazırladığınız “Özel Görev Sıraları / Custom Task Sequence”, İşletim Sistemi kurulumu (OSD) gibi, PXE boot ile kullanmak istiyorsanız. “Önyükleme yansıması / Boot image” de seçmeniz gerekir. Bu işlemi de şöyle yapabilirsiniz:

Önce “Önyükleme yansıması / Boot image” listeyelim:

Get-CMBootImage | format-table Name, packageID

Name             packageID
Boot-64          ST100030
Boot-86          ST100031

Get-CMTaskSequence -Name $TS.Name -fast | Set-CMTaskSequence -BootImageId "ST100030" -UseBootImage $true

Koleksiyondan dağıtımı kaldırmak için:

Remove-CMTaskSequenceDeployment -TaskSequencePackageId (Get-CMTaskSequence -fast -name $TS.Name).PackageID -CollectionName "Test_Kurulum" -Force

Listeleme:

Get-CMTaskSequence -Name $TS.Name -fast | Get-CMTaskSequenceGroup  | ft -a Name, Description, Steps

Adım Silme:

Get-CMTaskSequence -Name $TS.Name -fast | remove-CMTaskSequenceStep -StepName "Uygulama Kurulum02" -Force

“Görev Sıraları / Task Sequences” kopyalama

Copy-CMTaskSequence -Name "PowerShell Ornek GorevS"

Yedekleme amaçlı, sadece “Görev Sıraları / Task Sequences” adımlarını  “Dışarı Aktarma / Export”  

export-cmtasksequence -name "PowerShell Ornek GorevS" -path A:\Yedek_TS\OS_Konum.zip -force

Herşeyi almak isterseniz, aşağıdaki seçenekleri de ekleyiniz; dikkat ediniz, bu seçenekler ile paket, uygulama v.b. içerikler de olacağı için zaman alabilir ve bolca yere ihtiyacınız olabilir:

-WithContent $true -WithDependence $true

Bu yazı ile birlikte Powershell ve SCCM ile ilgili yazıların sonuna geldik. Umarım işinize yarar.
İyi çalışmalar.

Kaynak
https://stackoverflow.com/questions/55254038/what-is-different-between-get-content-and-io-filereadalltext#55254773https://deploymentresearch.com/creating-task-sequences-in-configmgr-via-powershell/https://msendpointmgr.com/2016/05/23/modify-task-sequence-steps-in-configmgr-with-powershell/https://docs.microsoft.com/en-us/powershell/module/configurationmanager/new-cmtssteprunpowershellscript?view=sccm-pshttps://docs.microsoft.com/en-us/powershell/module/configurationmanager/set-cmtssteprunpowershellscript?view=sccm-ps

Hüseyin Çağlar

Emekli sistem yöeticisi :-)

İlgili Makaleler

2 Yorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu