Blog

PowerShell ile SCCM için Cihaz Koleksiyonu 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 önceki yazılarda olacak olan, fakat yazıyı gereksiz uzatmamak için ayıkladığım bu bölümü, ek bir yazı yapmak istedim. PowerShell ile “Cihaz Koleksiyonu / Device Collections” oluşturma ve kural eklemeden bahsetmeye çalışacağım.

ConfigManager” modülü yüklü, yönetici PS konsolu açalım, nasıl yapılacağından İlk yazıda bahsetmişşik.

Bir adet “Workstations | Windows 11 v22H2” isimli yeni bir koleksiyon oluşturalım:

New-CMDeviceCollection -Name "Workstations | Windows 11 v22H2" -LimitingCollectionName "All Desktop and Server Clients" 

Cihazların otomatik üye olması için de kuralında, işletim sisteminin “System.Build” değeri “10.0.22261” olan cihazları belirtelim:

Add-CMDeviceCollectionQueryMembershipRule -CollectionName "Workstations | Windows 11 v22H2" -QueryExpression "select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System where SMS_R_System.Build = '10.0.22261'" -RuleName "Workstations | Windows 11 v22H2"

Bir başka koleksiyon daha oluşturalım, bu örnekte, IP alt ağ adresi “192.168.19.x” olan bilgisayarların oluştuğu bir koleksiyon oluşturalım:

New-CMDeviceCollection -Name "Subnet_19_Bilgisayarlar" -LimitingCollectionName "All Desktop and Server Clients"

Add-CMDeviceCollectionQueryMembershipRule -CollectionName "Subnet_19_Bilgisayarlar" -QueryExpression "select SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier, SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client from SMS_R_System where SMS_R_System.IPSubnets like '192.168.19.0'" -RuleName "Subnet_19"

Bu örnekte, 2 adet farklı IP alt ağı ve etkialaniniza üye olan bilgisayarların oluştuğu bir koleksiyon oluşturalım:

New-CMDeviceCollection -Name "Subnet_66_77_Bilgisayarlar" -LimitingCollectionName "All Desktop and Server Clients"

Add-CMDeviceCollectionQueryMembershipRule -CollectionName "Subnet_66_77_Bilgisayarlar" -QueryExpression "select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System where SMS_R_System.IPSubnets like "192.168.66.0" and SMS_R_System.ResourceDomainORWorkgroup = "Etkialaniniz" or SMS_R_System.IPSubnets like "192.168.77.0" and SMS_R_System.ResourceDomainORWorkgroup like "Etkialaniniz"

Yukarıdaki örneğe başka alt ağlar da eklemek isterseniz, “or” ile başlayan bölümü çağaltıp, güncelleyerek devam edebilirsiniz.

Kural silme işlemi için:

remove-CMDeviceCollectionQueryMembershipRule -CollectionName "Koleksiyon_adi" -RuleName "silinecek_Kural_adi"

Kural kullanmak zorunda değilsiniz, doğrudan da bilgisayarları ekleyebilirsiniz.

Önce yukarıdaki komut ile “Uygulamalar Pilot 02”  isimli koleksiyon oluşturduktan sonra, hızlıca 2 adet makina ekleyelim:

"CPANKPC0001", "CPANKPC0002" | foreach-object { Add-CMDeviceCollectionDirectMembershipRule -CollectionName "Uygulamalar Pilot 02" -ResourceID ( Get-CMDevice -Name $_ -Fast ).ResourceID }

Bir metin dosyasında bulunan kayıtları ekleme ya da çıkarma işlemi için:

“pc_liste.txt” dosya içerisinde, her satırda bir bilgisayar ismi olsun.

örnek “pc_liste.txt” içeriği:

CPANKPC0001
CPANKPC0002
CPANKPC0003
...
CPANKPC0050

ekleme komutu:

Get-Content "C:\TEMP\pc_liste.txt" | foreach-object { Add-CMDeviceCollectionDirectMembershipRule -CollectionName "Uygulamalar Pilot 02" -ResourceID ( Get-CMDevice -Name $_ -Fast ).ResourceID }

çıkarma komutu:

get-content C:\temp\pc_liste_sil.txt | foreach-object { remove-CMDeviceCollectionDirectMembershipRule -CollectionName "Uygulamalar Pilot 02" -ResourceID ( Get-CMDevice -Name $_ -Fast ).ResourceID -force }"

Koleksiyona dağıtılmış uygulamaları listelemek için:

Get-CMDeployment -CollectionName "Deployment_Test" | format-table -a SoftwareName

Koleksiyona dağıtılmış bir uygulamayı çıkarmak için:

Get-CMDeployment -CollectionName "Deployment_Test" | Where-Object {$_.SoftwareName -like "PS Betik 0001"} | Remove-CMDeployment -Force

Koleksiyonu kopyalamak için:

Copy-CMCollection -Name "Deployment_Test" -NewName "Deployment_Test_02"

Cihaz Koleksiyonları / Device Collections” bulunduğu klasörden, farklı bir klasöre taşımak isterseniz, şu komut ile yapabilirsiniz:”ST1:\DeviceCollection\” bölümü sabit, “OSD” sizin taşımak istediğiniz klasör olarak düşününüz:

$CMkoleksiyon = Get-CMDeviceCollection -Name "OSD - Windows 11"
Move-CMObject -FolderPath "ST1:\DeviceCollection\OSD" -InputObject $CMkoleksiyon

Bir sonraki yazıda, “Özel Görev Sıraları / Custom Task Sequence” oluşturma komutlarını göreceğiz.

İyi Çalışmalar

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