İ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