Ciao,
oggi vorrei fornirvi un metodo per inserire/aggiornare i "Security Rights" di ConfigMgr senza l'utilizzo di console. Tralascio la praticità di un tale metodo, soprattutto se avete da configurare 10/20 Primary Sites in base con "Security Rights" ben precise sugli oggetti Collection, Package, Report, ecc..
Lo script in fondo alla pagina deve essere modificato come segue:
Nota: Miraccomando modificate SOLO le voci racchiuse tra <> !
Come sapere quale oggetto è "package" e quale classe corrisponde "Read,Modify,Delete" lo potete capire seguendo questo link http://technet.microsoft.com/en-us/library/dd334568.aspx dove sono presenti le tabelle di classi ed oggetti interessate da ConfigMgr.
Es. Supponiamo di voler inserire la permission READ,MODIFY,DELETE dell'oggetto COLLECTION all'utenza CONTOSO\PIPPO:
A questo punto possiamo collegarci al Primary Site ove vogliamo inserire/modificare le permissions e lanciare da cmd il comando "cscript setting_security.vbs". Lo script chiede se vogliamo collegarci al server locale (.) o ad un server remoto, in quest'ultimo caso ci chiederà anche userid e pwd da utilizzare per collegarsi.
Nota: Se lanciato per collegarsi in locale (.) utilizzerà il contesto User corrente per collegarsi al Primary Site.
Una volta fatto questo verificate da Console le permissions inserite, e in tutta la velocità potete replicare questa configurazione di Security Right su tutti gli altri Primary Site.
Saluti,
Simone.
Un ringraziamento all'amico Davide Martorella per la collaborazione nei test dello script :)
--- Ulteriori tips ---
---------------------
setting_security.vbs
----------------------
Dim connectionDim computerDim userNameDim userPasswordDim password 'Password object
On Error Resume Next
Wscript.StdOut.Write "Computer you want to connect to (Enter . for local): "computer = WScript.StdIn.ReadLine
If computer = "." Then userName = "" userPassword = ""Else Wscript.StdOut.Write "Please enter the user name: " userName = WScript.StdIn.ReadLine Set password = CreateObject("ScriptPW.Password") WScript.StdOut.Write "Please enter your password:" userPassword = password.GetPassword() End If Set connection = Connect(computer,userName,userPassword)
If Err.Number<>0 Then Wscript.Echo "Call to connect failed"End If
Call SetSecurityForAdvertisements(connection, userName)
Sub SetSecurityForAdvertisements(connection, userName)
Dim permissions On Error Resume Next ' Create the user class permissions object. Set permissions = connection.Get("SMS_UserClassPermissions").SpawnInstance_() If Err.Number<>0 Then Wscript.Echo "Couldn't get class permissions object" Exit Sub End If Nome dell'oggetto da modificare permissions.UserName = "<username>" permissions.ObjectKey = <object> permissions.ClassPermissions = <class> permissions.Put_ 'Nome dell'oggetto da modificare 'permissions.UserName = "<username>" 'permissions.ObjectKey = <object> 'permissions.ClassPermissions = <class> 'permissions.Put_
'Nome dell'oggetto da modificare 'permissions.UserName = "<username>" 'permissions.ObjectKey = <object> 'permissions.ClassPermissions = <class> 'permissions.Put_
'Nome dell'oggetto da modificare 'permissions.UserName = "<username>" 'permissions.ObjectKey = <object> 'permissions.ClassPermissions = <class> 'permissions.Put_ If Err.Number<>0 Then Wscript.Echo "Couldn't commit class permissions" Exit Sub End IfEnd Sub
Function Connect(server, userName, userPassword) On Error Resume Next Dim net Dim localConnection Dim swbemLocator Dim swbemServices Dim providerLoc Dim location Set swbemLocator = CreateObject("WbemScripting.SWbemLocator")
swbemLocator.Security_.AuthenticationLevel = 6 'Packet Privacy ' If the server is local, don't supply credentials. Set net = CreateObject("WScript.NetWork") If UCase(net.ComputerName) = UCase(server) Then localConnection = true userName = "" userPassword = "" server = "." End If ' Connect to the server. Set swbemServices= swbemLocator.ConnectServer _ (server, "root\sms",userName,userPassword) If Err.Number<>0 Then Wscript.Echo "Couldn't connect: " + Err.Description Connect = null Exit Function End If
' Determine where the provider is and connect. Set providerLoc = swbemServices.InstancesOf("SMS_ProviderLocation")
For Each location In providerLoc If location.ProviderForLocalSite = True Then Set swbemServices = swbemLocator.ConnectServer _ (location.Machine, "root\sms\site_" + _ location.SiteCode,userName,userPassword) If Err.Number<>0 Then Wscript.Echo "Couldn't connect:" + Err.Description Connect = Null Exit Function End If Set Connect = swbemServices Exit Function End If Next Set Connect = null ' Failed to connect.End Function
Le Opinioni espresse in questo blog sono strettamente personali e riflettono il punto di vista dell’autore/degli autori in base alla propria esperienza e conoscenza. I contenuti di questo blog inoltre non rappresentano (necessariamente) le opinioni di Microsoft e non costituiscono alcuna garanzia ne’ conferiscono alcun diritto
This posting is provided "AS IS" with no warranties, and confers no rights. Use of included utilities are subject to the terms specified at http://www.microsoft.com/info/copyright.htm.
Il tuo script è estremamente interessante. Esiste secondo te la possibilità di modificare il vbs per permettere la configurazione non degli oggetti generici (collection, packages, ecc...), ma anche di particolari collection o particolari packages? Tipo poter settare i security rights della collection "Software Install/Office" con particolari permessi per un utente specifico?