SCCM 2012 R2 Kullanıcılar ve Cihazları Arasında Iliskinin PowerShell Uzerinden Kurulması

Merhabalar,

Bu yazımda sizlere System Center Configuration Manager 2012 / R2 sürümlerinde kullanıcılarınızı cihazlarınıza (Primary Devices) veya cihazlarınız üzerine kullanıcılarınızı (Primary Users) ekleyebilmenizi PowerShell üzerinden nasıl gerçekleştirebileceğinizi bir script ile yapacağız.

SCCM üzerinde bu gibi işlemleri Add-CMUserAffinityToDevice cmdlet kullanılarak gerçekleştiremiyebilirsiniz ki tecrübe ettiğinizde de göreceksiniz. Bu gibi işlemlerin doğrudan SMS Provider üzerinden yapılması gerekir.

Kullanıcılar için Primary Device tanımlama

Mevcutta bulunan kullanıcılarınız için primary device lar tanımlayarak kullanıcılarınız ile belirtilen cihazlar üzerinden doğrudan ilişki kurabilirsiniz. Tabiki burada ilk olarak bu işlemleri GUI üzerinden nasıl yapacağınız sonrasından da PowerShell script üzerinden nasıl gerçekleştireceğimizi ve script’ imizi açıklayarak devam edeğiz.

Tabiki Client Setting üzerinden bir işlem yapmamız gerekiyor.

Bunun için;

Öncelinle bu ilişkiyi GUI üzerinden nasıl gerçekleştireceğimize bakalım bunun için Yönetim konsolumuz üzerinde yönetimsel konfigürasyonları yaptığımız Administration üzerinden Client Settings’ de bulunan Default Client Settings’ i açıyorum. Ayarlar üzeride bulunan User and Device Affinty seçeneklerinde bulunan Automatically configure user device affinity from usage data ayarımızı Yes olarak ayarlıyoruz.

User üzerine Primary Device tanımlama

Primary Device tanıması yapacağımız user’ ımız üzerinde sağ click yaparak Edit Primary Device diyoruz. Burada karşımıza gelen pencerede userlarımız üzerinde primary devicelarımızı Add diyerek tanımlayabilirsiniz.

Device üzerinde Primary User tanımlanması

 

Bir önceki adımımızda userlarımızın üzerine primary device larımı tanımlamıştık. Bir diğer yoluna devicelarımız üzerine Primary User tanımlaması gerçekleştiriyoruz. Bunun için aynı adımları bu sefer Devices içerisinde bulunan devicelarımızın üzerinde sağ click yaparak Edit Primary Users diyerek gerçekleştirebilirsiniz.

Artık makalemizin başında dediğimiz gibi bu işlemleri PowerShell üzerinde gerçekleştireceğiz…

User ve Device arasında ilişkinin PowerShell üzerinden oluşturulması

En başta dediğim gibi Add-CMUserAffinityToDevice cmdlet ler kullanılarak gerçekleştiremezsiniz. Bunu işlemleri doğrudan SMS sağlayıcılar üzerinde doğru parametrelerin kullanılarak nasıl yapılacağını göreceğiz. Yapacağım bu örnek üzerinde User ve Device isimlerini biliyorum. Tabiki buradaki kodlamayı Orchestrator üzerinde de entegre edebilirsiniz.

Öncelikle, SMS Sağlayıcımıza bağlanmadan önce değişkenleri belirtmekte fayda görüyorum.

1 # Set variables for connecting to the SMS Provider

2 $SiteServer = “SCCM”

3 $SiteCode = “ASL”

SMS_UserMachineRelationship WMI class larını kullanırken mevcut bulunan CreateRelationship metotlarını kullanmanız gerekmektedir. Bizde burada metotumuzu kullanacağız.

4 # Set variables for an user and a device

5 $WMIConnection = [WmiClass]”\\$($SiteServer)\root\SMS\site_$($SiteCode):SMS_UserMachineRelationship”

6 $WMIConnection.psbase.GetMethodParameters(“CreateRelationship”)

Yukarıda belirttiğim bu kodu PowerShell üzerinde çalıştırdığınızda aşağıdaki gibi çıktı alacaksınızdır.

CreateRelationship metotu kullanımı için üzerinde belirtebileceğimiz 4 farklı parametre bulunmaktadır. Bu parametreleri Technet üzerinden http://msdn.microsoft.com/en-us/library/hh948294.aspx adresinden bulabilirsiniz. Burada TypeId opsiyonel’ dir. Fakat ben test ortamımda bunu belirteceğim. Daha da ayrıntılı incelemek için doküman a göz atabilirsiniz.

Burada SourceId’ nin kabul ettiği bazı değerler vardır. Bu değerleri aşağıda hazırladım tabloda bulabilirsiniz.

Software Catalog The end user enabled the relationship by selecting the option in the AppCatalog Web page.
Administrator An administrator created the relationship manually in the UI.
User Unused/deprecated.
Usage Agent The threshold of activity triggered a relationship to be created.
Device Management The user/device were tied together during enrollment.
OSD The user/device were tied together as part of OSD imaging.
Fast Install The user/device were tied together temporarily to enable an on-demand install from the catalog if no UDA relationship installed before the Install was triggered.
Exchange Server connector The device was provisioned through EAS.
7 # Determine the device ResourceID, username as shown in ConfigMgr and the SourceId

8 $CMDeviceResourceID = Get-WmiObject -Namespace “root\SMS\site_$($SiteCode)” -Class SMS_R_System -ComputerName $SiteServer -Filter “Name like ‘%$($DeviceName)%'” | Select-Object -ExpandProperty ResourceID

9 $CMUserName = Get-WmiObject -Namespace “root\SMS\site_$($SiteCode)” -Class SMS_R_User -ComputerName $SiteServer -Filter “Name like ‘%$($UserName)%'” | Select-Object -ExpandProperty Name

10 $CMUserName = $CMUserName.Split(” “)[0]

11 [int]$SourceId = 2 #2 mean that it’s been added by an administrator

Yukarıda belirtmiş olduğum değerlerde maalesef belirtici bir Integer değer bulunmamaktadır. Burada SourceId ye mutlaka gireceğiniz değer Integer tipinde olmalıdır. Örnek vermek gerekirse Tabloda Software Catalog’ un ConfigMgr üzerinde Integer değeri : 1, Administrator Integer değeri : 2 dir. Maalesef bu Integer değerler belirtiğim doküman üzerin de de belirtilmemiştir.

12 # Specify the WMI Class

13 $WMIConnection = [WmiClass]”\\$($SiteServer)\root\SMS\site_$($SiteCode):SMS_UserMachineRelationship”

Sonrasında WMI Sınıfında CreateRelationship metotunun bulunacağını mutlaka belirtmemiz gerekmektedir.

14 # Get the method parameters and set them

15 $NewRelation = $WMIConnection.psbase.GetMethodParameters(“CreateRelationship”)

16 $NewRelation.MachineResourceId = $CMDeviceResourceID

17 $NewRelation.SourceId = $SourceId

18 $NewRelation.TypeId = 1

19 $NewRelation.UserAccountName = $CMUserName

Sahip olduğumuz $WMIConnection da bulunan WMI Class ayarlamalarımızda $NewRelation deperlerimizi belirterek devam ediyoruz.

20 # Invoke the CreateRelationship method

21 $WMIConnection.psbase.InvokeMethod(“CreateRelationship”, $NewRelation, $null)

Son olarak CreateRelation metotumuzu çağırarak User ve Device’ ımız arasındaki ilişkimizi oluşturuyoruz.

Kodlarımızı çalıştırmadan önce işaretlediğim kısımda CLIENT1 (Device) ile HUSEYIN CENGİZ (User) arasında ki ilişkiyi oluşturacağız, gereken kodlamayı tamamladıktan sonra Script’ imizi çalıştırıyoruz.

CreateRelationship.ps1 script’ini buradan indirebilirsiniz.

Hazırladığımız Script’ imizi çalıştırdıktan sonra artık kontrol ediyoruz. Görüldüğü üzere CLIENT1 ile belirtdiğimiz user’ ımız arasında ilişkinin başarılı bir şekilde kurulduğunu görebiliyoruz.

Yukarıda belirtdiğim Script’in tamamı

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

# Set variables for connecting to the SMS Provider

$SiteServer = “SCCM”

$SiteCode = “ASL”

 

# Set variables for an user and a device

$DeviceName = “CLIENT1”

$UserName = “huseyin.cengiz”

 

# Determine the device ResourceID, username as shown in ConfigMgr and the SourceId

$CMDeviceResourceID = Get-WmiObject -Namespace “root\SMS\site_$($SiteCode)” -Class SMS_R_System -ComputerName $SiteServer -Filter “Name like ‘%$($DeviceName)%'” | Select-Object -ExpandProperty ResourceID

$CMUserName = Get-WmiObject -Namespace “root\SMS\site_$($SiteCode)” -Class SMS_R_User -ComputerName $SiteServer -Filter “Name like ‘%$($UserName)%'” | Select-Object -ExpandProperty Name

$CMUserName = $CMUserName.Split(” “)[0]

[int]$SourceId = 2 #2 mean that it’s been added by an administrator

 

# Specify the WMI Class

$WMIConnection = [WmiClass]”\\$($SiteServer)\root\SMS\site_$($SiteCode):SMS_UserMachineRelationship”

 

# Get the method parameters and set them

$NewRelation = $WMIConnection.psbase.GetMethodParameters(“CreateRelationship”)

$NewRelation.MachineResourceId = $CMDeviceResourceID

$NewRelation.SourceId = $SourceId

$NewRelation.TypeId = 1

$NewRelation.UserAccountName = $CMUserName

 

# Invoke the CreateRelationship method

$WMIConnection.psbase.InvokeMethod(“CreateRelationship”, $NewRelation, $null)

Twitter Auto Publish Powered By : XYZScripts.com