Fragensteller
SCCM 2012 SP1: Setzen einer neuen Machine-Variable während einer OSD Task Sequence

Allgemeine Diskussion
-
Hallo,
Ich möchte eine Machine-Variable während einer OSD Task Sequence erzeugen.
Diese soll erhalten bleiben und in der GUI im Device- Objekt im Reiter Variables erscheinen.
Script:
$TS = New-Object -ComObject Microsoft.SMS.TSEnvironment
$SN = (Get-WmiObject -Class Win32_BIOS).SerialNumber
$TS.Value("SerialNumber") = $SNLeider so kein Erfolg. Denkfehler....
Hat jemand eine Idee für die Lösung?Frank
- Typ geändert Raul TalmaciuMicrosoft contingent staff Dienstag, 27. Mai 2014 08:08 Warten auf Feedback
Alle Antworten
-
Das Skript setzt eine TS-Variable, diese ist aber nur während der Laufzeit der TS existent. Diese taucht aber nicht am Device-Objekt auf (denn dort sind nur Variablen gelistet, die direkt für das Device-Objekt (serverseitig) gesetzt sind).
Torsten Meringer | http://www.mssccmfaq.de
-
Jaein. Machbar schon, Aufwand eher hoch (das Skript müsste dann die Variable direkt auf das Objekt in ConfigMgr setzen. "Problem": Verbindung zum Site Server bzw Provider nötig inkl. Angabe von Credentials).
Torsten Meringer | http://www.mssccmfaq.de
-
Hi nochmal,
habe mal eine Funktion gebaut. Leider löscht diese mir alle vorhandenen Variablen. Obwohl ich das eigentlich abfange. Fehler gibt es nicht....Hast Du eine Idee?
####
Function AddSCCMMachineVariable {
Param( [string]$MachineName, [string]$VariableName, [string]$VariableValue )
$SB1 = {
$SiteCode = "xx"
$SiteServer = "SRV"
$ResourceID = (Get-WmiObject -Class SMS_R_System -Namespace root/SMS/site_$($SiteCode) -ComputerName $SiteServer -Filter "Name='$($args[0])'").ResourceId
$MachineSettings = Get-WMIObject -computername $SiteServer -Namespace "root\SMS\site_$($siteCode)" -class "SMS_MachineSettings" -Filter "ResourceID='$ResourceID'"
If (!$MachineSettings) {
$NewMachineSettingsInstance = $([wmiclass]"\\$SiteServer\Root\SMS\Site_$($SiteCode):SMS_MachineSettings").CreateInstance()
$NewMachineSettingsInstance.ResourceID = $ResourceID
$NewMachineSettingsInstance.SourceSite = $SiteCode
$NewMachineSettingsInstance.LocaleID = 1033
$NewMachineSettingsInstance.psbase
$NewMachineSettingsInstance.psbase.Put()
$MachineSettings += $NewMachineSettingsInstance }$MachineSettings.psbase.Get()
$MachineVariable = $([wmiclass]"\\$SiteServer\Root\SMS\Site_$($SiteCode):SMS_MachineVariable").CreateInstance()
$MachineVariable.Name = $($args[1])
$MachineVariable.Value = $($args[2])
$MachineVariable.IsMasked = [Int]$($MachineVariable.IsMasked)
[System.Management.ManagementBaseObject[]]$MachineVariables += $MachineVariable
$MachineSettings.MachineVariables = $MachineVariables
$MachineSettings.psbase.Put()
}
write-host $SB1
#$passwd = convertto-securestring -AsPlainText -String "TI3333!!" -Force
#$Cred=New-Object system.Management.Automation.PSCredential("TI-S\SA_SCCM_NAA", $passwd)
$SiteCode = "xx"
$SiteServer = "SRV"
$passwd = convertto-securestring -AsPlainText -String "xxxxx" -Force
$Cred=New-Object system.Management.Automation.PSCredential("dom\xxxxx", $passwd)
$PSSession = New-PSsession -ComputerName $SiteServer -Credential $cred
Invoke-Command -Session $PSSession -ScriptBlock $SB1 -Argumentlist $MachineName,$VariableName,$VariableValue
Remove-PSSession -Session $PSSession
}AddSCCMMachineVariable "test6320" "SerialNumber1" "12345678"
-
Die Variablen sind in einem Array gespeichert. Also erst das (ggfs) vorhandene Array auslesen, um 1 erweitern und die neue Variable hinzufügen.
Torsten Meringer | http://www.mssccmfaq.de
-
Danke.
Habe jetzt noch ein Berechtigungs problem. Mit Dom Admin geht es.
Habe neuen Nutzer angelegt und ihn für PS
Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI
und WMI wmimgmt.msc brechtigt.
PS remote geht beim Zugriff auf WMI hakt es. Hast DU noch einen Tip wo es hier hakt?
Habe es so hier gemacht:
http://www.sevecek.com/EnglishPages/Lists/Posts/Post.aspx?ID=10Der gezeigte Befehl für Windows 2008 R2 geht bei mir nicht:
winrm set winrm/config/service @{RootSDDL="O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;S-1-5-21-3412575342-4025462326-617077526-1002)S:P(AU;FA;GA;;;WD)(AU;SA;GWGX;;;WD)"}
Habe die SID meines Nutzers ersetzt...er hatte eine Gruppe...?Ist der wirklich notwending?
Frank
-
Der User hat aber schon explizit Reche in ConfigMgr?
(Hab ich übrigens schon einmal erwähnt, dass sowas (=von einem Client aus serverseitige Dinge erledigen) eher nicht die beste Lösung ist?)Torsten Meringer | http://www.mssccmfaq.de
-
Du meinst unter Administration\Security\adminUsers ?
Ja, genau da. Ich würde (zu Testzwecken!) erst einmal mit einem Full Admin starten, damit Du siehst, ob das Skript dann an sich funktioniert. Erst wenn dieses läuft, die Permissions einschränken.
Keine Ahnung, was besser wäre - ich kenne die genauen Anforderungen und die Umgebung nicht.Torsten Meringer | http://www.mssccmfaq.de