Search the Community
Showing results for tags 'SCCM 2012'.
-
Please help........... I had to do SCCM 2012 Recovery due to disaster and now having some confusing issues around Windows Updates for Clients The main issue is some of my Windows Clients are not seeing Windows Updates but others are getting OK. I have multiple of device collections based on OS, All Windows7, Windows 2008, Windows 2003, Windows 2012 etc. What are NOT working? 1. I have deployed Windows Updates on all Device Collections. Except Windows 7 and Windows 2008 Collections are not getting any updates. Deployment Status is showing all Clients under Unknown tab as client check passed/Active. Client cannot see any updates at all. What are working? 1. Windows are installing correctly (don’t know how) on Windows 2012 and Windows 2003 device collection 2. I have also created on Software group with IE updated and deployed to Windows 7 device collection, which worked OK 3. Application/Software updates are working OK What I have done: 1. I have started a TechNet forum discussion before but I have closed it as I thought my problem has resolved, which is not the casehttp://social.technet.microsoft.com/Forums/en-US/dd02da59-2a15-42a7-b665-8578daca60d9/after-site-recovery-sccm-2012-clients-cannot-download-approved-windows-updates?forum=configmanagergeneral&prof=required 2. I have noticed that my boundaries are not correctly represented my Windows 7 clients VLANs, which should only impact on machines on new VLAN but machines in existing VLAN should get Windows Updates without any trouble. Having says that server VLAN remains unchanged but Windows Updates are not happening for Windows 2008 device collections 3. I have not started Windows OS deployment via SCCM yet but I noticed that the self-signed certificate has already expired and status is UNBLOCKED. (Administration>Security>Certificates) and also expired certificate is showing (Administration>Distribution Points> properties> under General Tab Because some of the Device Collection Windows Updates is happening successfully, it think this is only related, if I want to Push Windows OS deployment or I may wrong. 4. Also my Client Setting Property is showing "Fales" under Software Updates "When any software update deployment deadline is reached, install all other software update deployment with deadline coming within a specific period of time. Should it be " True"?
-
Hello, Looking for a bit of advice for anyone able to help. Implementing SCCM 2012 into a new organisation at the same time as a global refresh to a new domain. I need to capture user profiles from the old domain using USMT and restore to the new one. Is this possible? Thanks
-
I just recently implemented a SCCM 2012 RC server, and have built up a test environment for it. The clients are recieving update policies, but are not receiving notifications on available software items through the Software Center. They can go to the Application Catalog, where tey are able to see the available software, but are not able to submit a request, nor can they download and install the applications. I also noticed that they are unable to select the "I regularly use this computer to do my work" option from the "My devices" tab on the Catalog. All site components are in the green, and I have tried to check the logs, but I am unable to find anything that points to any issue. I am including screenshots of the 2 issues that I mentioned regarding the Application Catalog. We are a Windows 7 shop, and all machines are currently running IE8. The AD Schema has not been extended, since our senior systems admin is worried about any negative repurcussions that may cause. I am almost certain that this has to do with some settings in IIS, but I am too unfamiliar with it to go poking around. Any guidance would be more than appreciated.
-
I work for a university that has a standard DNS suffix that matches the domain name across most of the University. My department, however, is unique and our workstations are actually assigned a different DNS suffix that does not match the domain name. So a computer may be named CompName.DomainName.edu but it will resolve as CompName.AltDNSSuffix.edu. Central IT has given out department's IT delegated access to our department's device collection in Configuration Manager 2012 and sent us to training. One of the suggestions of our trainer was to utilize Now Micro Right Click Tools. These tools work for every department in the university but mine. Any time I try to use them, I get told that the workstation is offline. I believe the reason for this is my department's unique DNS Suffix. The actual error I get is "CompName.DomainName.edu is not online." The problem is that CompName.DomainName.edu does not resolve, only CompName.AltDNSSuffix.edu will resolve. I do not have control over the DNS or DHCP so I am looking for a solution that does not involve changes to their configuration. Now Micro Right Click tools is really just a cool collection of Powershell scripts so I believe I can correct this if I can get the script which queries and assigns the computer name to a variable to assign only the first part of the computer name, not the FQDN to the variable. Meaning the variable $CompName becomes "CompName" and not "CompName.DomainName.edu". I am not that skilled with Powershell or scripting in general and would appreciate any assistance. I believe the script I will paste at the bottom of this post is the one that needs to be altered. Thanks! Ryan <# Functions that do all the work Author: Ryan Ephgrave Now Micro Right Click Tools #> $ErrorActionPreference = "SilentlyContinue" $Script:JobTimer = @{} $Script:SkippedJobs = @() $Script:TimedOutComps = New-Object System.Collections.Arraylist $Script:UnsuccessfulCount = 0 $Script:NumSuccessful = 0 $Script:SuccessfulArray = New-Object System.Collections.Arraylist $Script:UnsuccessfulArray = New-Object System.Collections.Arraylist Function WOL { Param ( $CompName, $MAC, $IP, $SubnetMask, $Port, $PacketsToSend ) $UDPclient = New-Object System.Net.Sockets.UdpClient filter Convert-IPToDecimal{([iPAddress][string]([iPAddress]$_)).Address} filter Convert-DecimalToIP{([system.Net.IPAddress]$_).IPAddressToString} $PacketSentCount = 0 $SentPacket = $false $IPArray = $IP.Split(",") $MaskArray = $SubnetMask.Split(",") foreach ($instance in $IPArray){ if ($instance.contains(".")){ foreach ($MaskInstance in $MaskArray){ if ($MaskInstance.contains(".")){ $Error.Clear() $strEditedMac = $MAC | Out-String $strEditedMac = $strEditedMac.replace(":","") $strEditedMac = $strEditedMac.Substring(0,12) [uInt32]$ip = $instance | Convert-IPToDecimal [uInt32]$subnet = $MaskInstance | Convert-IPToDecimal [uInt32]$broadcast = $ip -band $subnet $broadcastAddr = $broadcast -bor -bnot $subnet | Convert-DecimalToIP $BroadcastAddress = [Net.IPAddress]::Parse($BroadcastAddr) $MakingPacket=0,2,4,6,8,10 | % {[Convert]::ToByte($strEditedMac.substring($_,2),16)} $Packet = (,[byte]255 * 6) + ($MakingPacket * 16) $UDPclient.Connect($BroadcastAddress,$Port) Do { [void]$UDPclient.Send($Packet, 102) $PacketSentCount++ } while ($PacketSentCount -lt $PacketsToSend) $SentPacket = $true $Results = Select-Object -InputObject "" One, Two, Three, Four, Five $Results.One = "$CompName" $Results.Two = "$MAC" $Results.Three = "$Instance" $Results.Four = "$MaskInstance" $Results.Five = "$Port" $Script:SuccessfulArray += $Results } } } } if ($SentPacket -eq $false) { $Results = Select-Object -InputObject "" One $Results.One = "$CompName" $Script:UnsuccessfulArray += $Results } $SentPacket } $Client_Actions = { $CompName = $args[0] $strAction = $args[1] $Answer = $args[2] If (Test-Connection -computername $CompName -count 1 -quiet){ if ($Answer -eq 6) { $ActionObject = Get-WmiObject -Query "Select * from InventoryActionStatus where InventoryActionID = '$strAction'" -Namespace root\ccm\invagt -ComputerName $CompName $ActionObject | Remove-WmiObject } $Error.Clear() $WMIPath = "\\" + $CompName + "\root\ccm:SMS_Client" $SMSwmi = [wmiclass] $WMIPath [Void]$SMSwmi.TriggerSchedule($strAction) if($Error[0]){$strOutput = "$CompName" + "|Error|" + $Error} else{$strOutput = "$CompName" + "|Successful"} } else {$strOutput = "$CompName" + "|Off"} Write-Output $strOutput } $Ping_Computer = { $CompName = $args[0] $strOutput = "$CompName|Left|" Test-connection -computername $CompName -count 1 | ForEach-Object { $StrOutput = $strOutput + $_.ProtocolAddress $StrOutput = $strOutput + "|" + $_.ResponseTime + "ms" $StrOutput = $strOutput + "|" + $_.ReplySize $StrOutput = $strOutput + "|" + $_.ResponseTimeToLive + "|" } if ($Error[0]) {$strOutput = "$CompName|Right|Off"} Write-Output $strOutput } $GPUpdate_Computer = { $CompName = $args[0] $UserPolicy = $args[1] $ComputerPolicy = $args[2] $Error.Clear() if ($UserPolicy -eq "True" -and $ComputerPolicy -eq "True") {$strCommand = "cmd /c echo N | gpupdate /force"} elseif ($UserPolicy -eq "True") {$strCommand = "cmd /c echo N | gpupdate /Target:User /force"} elseif ($ComputerPolicy -eq "True") {$strCommand = "cmd /c echo N | gpupdate /Target:Computer /force"} else {$strCommand = "cmd /c echo N | gpupdate /force"} if (Test-Connection $CompName -Count 1) { if ($UserPolicy -eq "True") { $LoggedOnUser = $null $strQuery = "Select UserName from Win32_ComputerSystem" Get-WmiObject -Query $strQuery -ComputerName $CompName | ForEach-Object {$LoggedOnUser = $_.UserName} if ($LoggedOnUser.Length -lt 1) { $strQuery = "Select * from Win32_Process where Name like 'explorer.exe'" Get-WmiObject -Query $strQuery -ComputerName $CompName | ForEach-Object {$LoggedOnUser = $_.GetOwner()} $LoggedOnUser = $LoggedOnUser.Domain + "\" + $LoggedOnUser.User } $LoggedOnUser = $LoggedOnUser | Out-String $LoggedOnUser = $LoggedOnUser.replace("`n","") if ($LoggedOnUser.Length -gt 2) { $Today = Get-Date $Tomorrow = $Today.AddDays(1) $Today = "{0:MM/dd/yyyy}" -f [DateTime]$Today $Tomorrow = "{0:MM/dd/yyyy}" -f [DateTime]$Tomorrow & cmd /c schtasks.exe /create /S "$CompName" /RU "$LoggedOnUser" /SC DAILY /SD "$Today" /ST "00:02" /ED "$Tomorrow" /Z /F /TN "Temp_GPUpdate_Task" /TR "`"$strCommand`"" Start-Sleep 10 & cmd /c schtasks.exe /run /S "$CompName" /i /tn "Temp_GPUpdate_Task" & cmd /c schtasks.exe /delete /S "$CompName" /f /tn "Temp_GPUpdate_Task" if ($Error[0]) { $ErrorMsg = $Error[0].Exception.Message $strOutput = "$CompName|Error|$ErrorMsg" } else {$strOutput = "$CompName|Successful|$LoggedOnUser"} } else { [WMIClass]$wmi = "\\$CompName\root\cimv2:Win32_Process" $wmi.Create($strCommand) | Out-Null if ($Error[0]) { $ErrorMsg = $Error[0].Exception.Message $strOutput = "$CompName|Error|$ErrorMsg" } else {$strOutput = "$CompName|Successful"} } } else { [WMIClass]$wmi = "\\$CompName\root\cimv2:Win32_Process" $wmi.Create($strCommand) | Out-Null if ($Error[0]) { $ErrorMsg = $Error[0].Exception.Message $strOutput = "$CompName|Error|$ErrorMsg" } else {$strOutput = "$CompName|Successful"} } } else {$strOutput = "$CompName|Off"} Write-Output $strOutput } $Cancel_Pending_Reboot = { $CompName = $args[0] If (test-connection -computername $CompName -count 1 -quiet){ $Error.Clear() & shutdown.exe /m $CompName /a $ShutdownExitCode = $LastExitCode if ($ShutdownExitCode -eq 1116) {$strOutput = "$CompName" + "|No pending shutdown"} elseif ($ShutdownExitCode -eq 0) {$strOutput = "$CompName" + "|Cancelled pending shutdown"} else {$strOutput = "$CompName" + "|Error|" + $Error} } else {$strOutput = "$CompName|Off"} Write-Output $strOutput } $Change_Cache_Size = { $CompName = $args[0] $NewCacheSize = $args[1] If (test-connection -computername $CompName -count 1 -quiet){ $Error.Clear() $CacheUsed = 0 $strQuery = "select ContentSize from CacheInfoEx" Get-WmiObject -ComputerName $CompName -Query $strQuery -Namespace root\ccm\SoftMgmtAgent | ForEach-Object { if ($_.ContentSize -ne $null) { $TempNum = 0 $TempNum = $_.ContentSize $TempNum = $TempNum / 1024 $CacheUsed = $CacheUsed + $TempNum } } $cachesize = Get-WmiObject -ComputerName $CompName -Class CacheConfig -Namespace root\ccm\softmgmtagent foreach ($instance in $cachesize) {$OldCache = $instance.Size} $Error.Clear() $cachesize.Size = "$NewCacheSize" $cachesize.Put() | Out-Null if($Error[0]){$strOutput = $CompName + "|Error|" + $Error} else{$strOutput = $CompName + "|Successful|" + $NewCacheSize + "|" + $OldCache + "|" + $CacheUsed} } else {$strOutput = "$Compname|Off"} Write-Output $strOutput } $Clear_Cache = { $CompName = $null $CompName = $args[0] If (test-connection -computername $CompName -count 1 -quiet){ $Error.Clear() Get-WmiObject -ComputerName $CompName -Class CacheInfoEx -Namespace root\ccm\softmgmtagent | ForEach-Object { $CachePath = $_.Location $CachePath = $CachePath.replace(":","$") $CachePath = "\\$CompName\$CachePath" Remove-Item $CachePath -Recurse -Force $_ | Remove-WmiObject } if ($Error[0]) {$strOutput = "$CompName" + "|Error| " + $Error} else {$strOutput = "$CompName" + "|Successful"} } else {$strOutput = "$CompName" + "|Off"} Write-Output $strOutput } $Repair_Client = { $CompName = $null $CompName = $args[0] If (test-connection -computername $CompName -count 1 -quiet){ $Error.Clear() $WMIPath = "\\" + $CompName + "\root\ccm:SMS_Client" $SMSwmi = [wmiclass] $WMIPath [Void]$SMSwmi.RepairClient() if ($Error[0]) {$strOutput = "$CompName" + "|Error|" + $Error} else {$strOutput = "$CompName" + "|Successful"} } else {$strOutput = "$CompName" + "|Off"} Write-Output $strOutput } $Restart_SMS_Service = { $CompName = $null $CompName = $args[0] If (test-connection -computername $CompName -count 1 -quiet){ $Error.Clear() $CcmExecService = Get-Service -ComputerName $CompName -Name "CcmExec" Restart-Service -InputObject $CcmExecService if ($Error[0]) {$strOutput = "$CompName" + "|Error| " + $Error} else {$strOutput = "$CompName" + "|Successful"} } else {$strOutput = "$CompName" + "|Off"} Write-Output $strOutput } $Uninstall_Client = { $CompName = $null $CompName = $args[0] If (test-connection -computername $CompName -count 1 -quiet){ $Error.Clear() Get-WmiObject -ComputerName $CompName -Class CCM_InstalledProduct -Namespace root\ccm | ForEach-Object {$ProductCode = $_.ProductCode} $UninstallCommand = "msiexec /x `"$ProductCode`" REBOOT=ReallySuppress /q" $WMIPath = "\\" + $CompName + "\root\cimv2:Win32_Process" $StartProcess = [wmiclass] $WMIPath $ProcError = $StartProcess.Create($UninstallCommand,$null,$null) $ProcError = $ProcError.ReturnValue if ($Error[0]) {$strOutput = "$CompName" + "|Error| " + $Error} else { if ($ProcError -eq 0){$strOutput = "$CompName" + "|Successful"} else {$strOutput = "$CompName" + "|Error| " + $Error} } } else {$strOutput = "$CompName" + "|Off"} Write-Output $strOutput } $Schedule_ShutdownRestart = { $CompName = $null $CompName = $args[0] $Action = $args[1] $Delay = $args[2] $IfUserOnBoxText = $args[3] $TaskName = $args[4] $FreqText = $args[5] $Modifier = $args[6] $StartDate = $args[7] $StartTime = $args[8] $EndDate = $args[9] $Directory = $args[10] $StartDay = $args[11] If (test-connection -computername $CompName -count 1 -quiet){ $Error.Clear() if ($Action -eq "Restart"){ if ($IfUserOnBoxText -eq "Restart/Shutdown") { $ShutdownCommand = "shutdown /r /f /t $delay" } elseif ($IfUserOnBoxText -eq "Give user a prompt to cancel"){ Get-WmiObject -ComputerName $CompName -class Win32_OperatingSystem | ForEach-Object {$WinDirectory = $_.WindowsDirectory} $ShutdownCommand = "$WinDirectory\ConfigMgr_Shutdown_Utility.exe /r /t $Delay /Schtask `"$WinDirectory\ConfigMgr_Shutdown_Utility.exe`"" $CopyDirectory = $WinDirectory.ToLower().replace("c:","\\$CompName\c$") Copy-Item "$Directory\ConfigMgr_Shutdown_Utility.exe" $CopyDirectory -Force Copy-Item "$Directory\ConfigMgr_Shutdown_Utility.vbs" $CopyDirectory -Force } elseif ($IfUserOnBoxText -eq "Cancel Restart/Shutdown") { Get-WmiObject -ComputerName $CompName -class Win32_OperatingSystem | ForEach-Object {$WinDirectory = $_.WindowsDirectory} $ShutdownCommand = "$WinDirectory\ConfigMgr_Shutdown_Utility.exe /r /t $Delay /Skip /Schtask `"$WinDirectory\ConfigMgr_Shutdown_Utility.exe`"" $CopyDirectory = $WinDirectory.ToLower().replace("c:","\\$CompName\c$") Copy-Item "$Directory\ConfigMgr_Shutdown_Utility.exe" $CopyDirectory -Force } } elseif ($Action -eq "Shutdown") { if ($IfUserOnBoxText -eq "Restart/Shutdown") { $ShutdownCommand = "shutdown /s /f /t $delay" } elseif ($IfUserOnBoxText -eq "Give user a prompt to cancel"){ Get-WmiObject -ComputerName $CompName -class Win32_OperatingSystem | ForEach-Object {$WinDirectory = $_.WindowsDirectory} $ShutdownCommand = "$WinDirectory\ConfigMgr_Shutdown_Utility.exe -arguments /s /t $Delay /Schtask `"$WinDirectory\ConfigMgr_Shutdown_Utility.exe`"" $CopyDirectory = $WinDirectory.ToLower().replace("c:","\\$CompName\c$") Copy-Item "$Directory\ConfigMgr_Shutdown_Utility.exe" $CopyDirectory -Force Copy-Item "$Directory\ConfigMgr_Shutdown_Utility.vbs" $CopyDirectory -Force } elseif ($IfUserOnBoxText -eq "Cancel Restart/Shutdown") { Get-WmiObject -ComputerName $CompName -class Win32_OperatingSystem | ForEach-Object {$WinDirectory = $_.WindowsDirectory} $ShutdownCommand = "$WinDirectory\ConfigMgr_Shutdown_Utility.exe -arguments /s /t $Delay /Skip /Schtask `"$WinDirectory\ConfigMgr_Shutdown_Utility.exe`"" $CopyDirectory = $WinDirectory.ToLower().replace("c:","\\$CompName\c$") Copy-Item "$Directory\ConfigMgr_Shutdown_Utility.exe" $CopyDirectory -Force } } if ($Error[0]) {$strOutput = "$CompName" + "|Error| " + $Error} else { if ($FreqText -eq "Once") { $Error.Clear() $strTest = & schtasks.exe /create /S "$CompName" /RU SYSTEM /SC ONCE /SD "$StartDate" /ST "$StartTime" /F /TN "$TaskName" /TR "`"$ShutdownCommand`"" if ($Error[0]) {$strOutput = "$CompName" + "|Error| " + $Error} else {$strOutput = "$CompName" + "|Successful"} } elseif ($FreqText -eq "Daily") { $Error.Clear() $strTest = & schtasks.exe /create /S "$CompName" /RU SYSTEM /SC DAILY /SD "$StartDate" /ST "$StartTime" /ED "$EndDate" /Z /F /TN "$TaskName" /TR "`"$ShutdownCommand`"" if ($Error[0]) {$strOutput = "$CompName" + "|Error| " + $Error} else {$strOutput = "$CompName" + "|Successful"} } elseif ($FreqText -eq "Weekly") { $Error.Clear() $strTest = & schtasks.exe /create /S "$CompName" /RU SYSTEM /SC WEEKLY /d "$StartDay" /SD "$StartDate" /ST "$StartTime" /ED "$EndDate" /Z /F /TN "$TaskName" /TR "`"$ShutdownCommand`"" if ($Error[0]) {$strOutput = "$CompName" + "|Error|$Error"} else {$strOutput = "$CompName" + "|Successful"} } elseif ($FreqText -eq "Monthly (On Day)") { $Error.Clear() if ($Modifier -eq "LASTDAY") {$strTest = & schtasks.exe /create /S "$CompName" /RU SYSTEM /SC MONTHLY /MO $Modifier /M * /SD "$StartDate" /ST "$StartTime" /ED "$EndDate" /Z /F /TN "$TaskName" /TR "`"$ShutdownCommand`""} else {$strTest = & schtasks.exe /create /S "$CompName" /RU SYSTEM /SC MONTHLY /MO $Modifier /d $StartDay /SD "$StartDate" /ST "$StartTime" /ED "$EndDate" /Z /F /TN "$TaskName" /TR "`"$ShutdownCommand`""} if ($Error[0]) {$strOutput = "$CompName" + "|Error| " + $Error} else {$strOutput = "$CompName" + "|Successful"} } elseif ($FreqText -eq "Monthly (On Date)") { $Error.Clear() $strTest = & schtasks.exe /create /S "$CompName" /RU SYSTEM /SC MONTHLY /d $StartDay /SD "$StartDate" /ST "$StartTime" /ED "$EndDate" /Z /F /TN "$TaskName" /TR "`"$ShutdownCommand`"" if ($Error[0]) {$strOutput = "$CompName" + "|Error| " + $Error} else {$strOutput = "$CompName" + "|Successful"} } } } else {$strOutput = "$CompName" + "|Off"} Write-Output $strOutput } $ShutdownRestart_Device = { $CompName = $args[0] $strAction = $args[1] $IndexNum = $args[2] $Delay = $args[3] $msg = $args[4] $Directory = $args[5] $psexec = $args[6] $LoggedOnUser = $null $LoggedOnDomain = $null If (test-connection $CompName -count 1 -quiet){ $Error.Clear() if ($strAction -eq "Restart"){ if ($IndexNum -eq 0){ & shutdown.exe /r /f /t $Delay /d p:0:0 /m $CompName /c $msg if ($Error[0]){ $ErrorMsg = $Error[0] $strOutput = $CompName + "|Error|" + $ErrorMsg } else {$strOutput = $CompName + "|Successful|" + $strAction} } elseif ($IndexNum -eq 1){ Get-WmiObject -ComputerName $CompName -class Win32_OperatingSystem | ForEach-Object {$WinDirectory = $_.WindowsDirectory} $CopyDirectory = $WinDirectory.ToLower().replace("c:","\\$CompName\c$") Copy-Item "$Directory\ConfigMgr_Shutdown_Utility.exe" $CopyDirectory -Force Copy-Item "$Directory\ConfigMgr_Shutdown_Utility.vbs" $CopyDirectory -Force $strQuery = "Select * from Win32_Process where Name='explorer.exe'" $SentShutdown = $false Get-WmiObject -ComputerName $CompName -Query $strQuery | ForEach-Object{ if ($_.Name -ne $null){ $SessionID = $_.SessionID $LoggedOnUser = $_.GetOwner().User $LoggedOnDomain = $_.GetOwner().Domain $LoggedOn = "$LoggedOnDomain" + "\" + "$LoggedOnUser" if (!($Error[0])) {$ClearError = $true} & $psexec "\\$CompName" /d /s /i $SessionID wscript.exe "$WinDirectory\ConfigMgr_Shutdown_Utility.vbs" "$WinDirectory\ConfigMgr_Shutdown_Utility.exe" /r /t $Delay /msg "`"$msg`"" | Out-Null if ($ClearError -eq $true) {$Error.Clear()} $SentShutdown = $true $strOutput = $Compname + "|Successful|Gave $LoggedOn a prompt to cancel $strAction" } } if ($SentShutdown -eq $false) { & shutdown.exe /r /f /t $Delay /d p:0:0 /m $CompName /c $msg $strOutput = $CompName + "|Successful|" + "$strAction" } if ($Error[0]) {$strOutput = $CompName + "|Error|" + $Error} } elseif ($IndexNum -eq 2){ $skip = 0 $strQuery = "Select * from Win32_Process where Name='explorer.exe'" Get-WmiObject -ComputerName $CompName -query $strQuery | ForEach-Object{ if ($_.Name -ne $null){ $skip = 1 $LoggedOnUser = $_.GetOwner().User $LoggedOnDomain = $_.GetOwner().Domain $LoggedOn = "$LoggedOnDomain" + "\" + "$LoggedOnUser" $strOutput = $CompName + "|Successful|Skipped - $LoggedOn" } } if ($skip -eq 0){ $Error.Clear() & shutdown.exe /r /f /t $Delay /d p:0:0 /m $CompName /c $msg if ($Error[0]){ $ErrorMsg = $Error[0] $strOutput = $CompName + "|Error|" + $ErrorMsg } else {$strOutput = $CompName + "|Successful|" + "$strAction"} } } } elseif ($strAction -eq "Shutdown"){ if ($IndexNum -eq 0){ & shutdown.exe /s /f /t $Delay /d p:0:0 /m $CompName /c $msg if ($Error[0]){ $ErrorMsg = $Error[0] $strOutput = $CompName + "|Error|" + $ErrorMsg } else {$strOutput = $CompName + "|Successful|" + "$strAction"} } elseif ($IndexNum -eq 1){ Get-WmiObject -ComputerName $CompName -class Win32_OperatingSystem | ForEach-Object {$WinDirectory = $_.WindowsDirectory} $CopyDirectory = $WinDirectory.ToLower().replace("c:","\\$CompName\c$") Copy-Item "$Directory\ConfigMgr_Shutdown_Utility.exe" $CopyDirectory -Force Copy-Item "$Directory\ConfigMgr_Shutdown_Utility.vbs" $CopyDirectory -Force $strQuery = "Select * from Win32_Process where Name='explorer.exe'" $SentShutdown = $false Get-WmiObject -ComputerName $CompName -Query $strQuery | ForEach-Object{ if ($_.Name -ne $null){ $SessionID = $_.SessionID $LoggedOnUser = $_.GetOwner().User $LoggedOnDomain = $_.GetOwner().Domain $LoggedOn = "$LoggedOnDomain" + "\" + "$LoggedOnUser" if (!($Error[0])) {$ClearError = $true} & $psexec "\\$CompName" /d /s /i $SessionID wscript.exe "$WinDirectory\ConfigMgr_Shutdown_Utility.vbs" "$WinDirectory\ConfigMgr_Shutdown_Utility.exe" /s /t $Delay /msg "`"$msg`"" | Out-Null if ($ClearError -eq $true) {$Error.Clear()} $SentShutdown = $true $strOutput = $Compname + "|Successful|Gave $LoggedOn a prompt to cancel $strAction" } } if ($SentShutdown -eq $false) { & shutdown.exe /s /f /t $Delay /d p:0:0 /m $CompName /c $msg $strOutput = $CompName + "|Successful|" + "$strAction" } if ($Error[0]) {$strOutput = $CompName + "|Error|" + $Error[0]} } elseif ($IndexNum -eq 2){ $skip = 0 $strQuery = "Select * from Win32_Process where Name='explorer.exe'" Get-WmiObject -ComputerName $CompName -query $strQuery | ForEach-Object{ if ($_.Name -ne $null){ $skip = 1 $LoggedOnUser = $_.GetOwner().User $LoggedOnDomain = $_.GetOwner().Domain $LoggedOn = "$LoggedOnDomain" + "\" + "$LoggedOnUser" $strOutput = "$CompName" + "|Successful|Skipped - $LoggedOn" } } if ($skip -eq 0){ $Error.Clear() & shutdown.exe /s /f /t $Delay /d p:0:0 /m $CompName /c $msg if ($Error[0]){ $ErrorMsg = $Error[0] $strOutput = $CompName + "|Error|" + $ErrorMsg } else {$strOutput = $CompName + "|Successful|" + "$strAction"} } } } } else {$strOutput = "$CompName |Off"} Write-Output $strOutput } $Rerun_Deployment = { $CompName = $null $CompName = $args[0] $AdvID = $args[1] If (test-connection -computername $CompName -count 1 -quiet){ $Error.Clear() $strQuery = "Select * from CCM_Scheduler_ScheduledMessage where ScheduledMessageID like '" + $AdvID + "%'" $objSMSSchID = Get-WmiObject -Query $strQuery -Namespace root\ccm\policy\machine\actualconfig -computername $CompName foreach($instance in $objSMSSchID){$strScheduleID = $instance.ScheduledMessageID} if ($Error[0]){$strOutput = "$CompName" + "|Error| " + $Error} else { $strQuery = "Select * from CCM_SoftwareDistribution where ADV_AdvertisementID='" + $AdvID + "'" Get-WmiObject -ComputerName $CompName -Namespace "root\CCM\Policy\Machine\ActualConfig" -Query $strQuery | ForEach-Object { $_.ADV_MandatoryAssignments = "True" $_.ADV_RepeatRunBehavior = "RerunAlways" [Void]$_.Put() } $WMIPath = "\\" + $CompName + "\root\ccm:SMS_Client" $SMSwmi = [wmiclass] $WMIPath [Void]$SMSwmi.TriggerSchedule($strScheduleID) if ($Error[0]){$strOutput = "$CompName" + "|Error| " + $Error} else {$strOutput = "$CompName" + "|Successful"} } } else {$strOutput = "$CompName" + "|Off"} Write-Output $strOutput } $CcmEval = { $CompName = $null $CompName = $args[0] $CcmEvalPath = $null If(Test-Connection $CompName -Count 1) { Get-WmiObject -ComputerName $CompName -Class Win32_OperatingSystem | ForEach-Object {$WindowsDirectory = $_.WindowsDirectory} $WindowsDirectory = $WindowsDirectory.replace(":","$") $WindowsDirectory = "\\$CompName\$WindowsDirectory" $TestPath1 = $WindowsDirectory + "\CCM\CcmEval.exe" $TestPath2 = $WindowsDirectory + "\System32\CCM\CcmEval.exe" $TestPath3 = $WindowsDirectory + "\syswow64\CCM\CcmEval.exe" if (Test-Path $TestPath1){$CCMEvalPath = $TestPath1} elseif (Test-Path $TestPath2){$CCMEvalPath = $TestPath2} elseif (Test-Path $TestPath3){$CCMEvalPath = $TestPath3} if ($CcmEvalPath -ne $null) { $Error.Clear() ([WMIClass]"\\$CompName\root\CIMV2:Win32_Process").Create($CcmEvalPath) | Out-Null if ($Error[0]) {$strOutput = "$CompName" + "|Error|" + "$Error"} else {$strOutput = "$CompName" + "|Successful"} } else {$strOutput = "$CompName" + "|Error|" + "$Error"} } else {$strOutput = "$CompName" + "|Off"} Write-Output $strOutput } #>
- 1 reply
-
- SCCM 2012
- Configuration Manager 2012
- (and 2 more)
-
I have been able to create a successful capture of a core server 2012 instance, but am having issues deploying it via task sequence. The target machine sees the advertisement in software center, but no smsts log is being created and the task sequence never actually kicks off. It starts to run, downloads, and gets stuck on "Installing". No progress bar ever appears. CCMExec log has no errors to speak of. Anyone every try this?
-
Application requirement / Global Condition issue
stgrdk posted a topic in Configuration Manager 2012
Hi Windows-Noob ppl, I have this problem and I don't know how to solve it. If i want to edit an applications requirement I get the first image no options at all. When I want to set an requirement on a application I get the second image, no options at all. It's like the box is not initiated or something. I don't know where to look to fix this issue. Just to clear it out I am full administrator and it has worked before, as you can see in the first image. A some sort of related question on my other post: http://www.windows-noob.com/forums/index.php?/topic/10776-wsus-classification-problems/ Anyone seen this before?- 2 replies
-
- Configmgr 2012
- SCCM 2012
-
(and 3 more)
Tagged with:
-
I am moving from WDS to SCCM 2012 for OSD. I have the image ready and deploys very nicely. The one thing that we need to do is, change the computer name based on the serial number. We set all of our names with the asset tag in the name. We have a DB that we scan all Serials, Asset Tags, Computer Name in. For example: Asset Tag: XXXXX Serial Number: 123456 Would have a computer name: LC0D401TO1XXXXX When using WDS we did this after the OS was installed using a bat file (code below). Now when doing this in SCCM 2012, the name either will not change or the computer will be deleted from the domain. Any help would be great!! set newMN= cscript.exe \\file_Location\inventory-sn.vbs //nologo %computername%>c:\install\machsn.txt FOR /f %%p IN (c:\install\machsn.txt) DO SET machisn=%%p find /c /i ",%machisn%," \\file_location\MNs.txt FOR /f "tokens=1,2,3 delims=," %%q in ('findstr /s %machisn% \\File_Location\MNs.txt') DO SET newMN=%%s SET MACHNAME=%newMN% NETDOM RENAMECOMPUTER %newMN% /NewName:%MACHNAME% /userD:domain\user /PasswordD:**** /FORCE
-
Hello! I'm trying to create a Windows 7 to Windows 7 computer refresh task sequence with USMT 4.0/Hard-links in SCCM 2012 SP1 CU1 environment. I followed Peter's tutorial http://www.petervanderwoude.nl/post/migrating-to-windows-8-by-using-hard-links-with-configmgr-2012/. The task sequence I created based off of Peter's tutorial completes with no errors but the computer does not get joined to the domain. I'm using a service account that serves as a "domain join only" account specified in the Apply Network Settings step. I use this same account in several other of my OSD task sequences and the computers join the domain fine. Is there a better way to do a computer refresh with same OS? I've only seen XP to 7 refresh scenarios around the web and I'm assuming it shouldn't matter with Windows 7 to Windows 7. If needed, I can attach any logs that would be helpful. Thanks!
-
hi everyone - my name is Meir from israel . i started to study SCCM , i am searching basic tutorials SCCM 2012 somebody can to direct me ?
-
Hello Windows-noob! I apologize if this is the wrong place to put this, however I'm new to this site and trying to get this resolved quickly. I'm having issues completing the installation of a SCCM client on a Windows 2008 R2 Server (It happens to be our Exchange box). Our site is up and functioning correctly - out of about 400 computers, this is the only problem I've ever had. On the client in the ClientIDManagerStartup Log, It says "Server rejected registration request: 3". On the server in the MP_RegistrationManager log, I've attached a snippet of the errors that keep repeating. I've tried resintalling, deleting the certificates, deleting the SMSCFG.INI file, and I can't seem to get it to work. I'm limited as far as what I can do to the server on-hours since it's our exchange server - for example I can't restart it anytime after 6:30 AM, so that has hindered my troubleshooting a little bit. It's the last PC I have on our entire network that needs the client, so any help will be appreciated. Thanks, opher15
-
Hi I have been testing the User Device Affinity and have a question about the last user logged on. In the console when i click a computer object and select "edit primary user" i can see the last logged on users to that specific computer. What's strange is that the last logged on user is not actually when a user logs on to the computer but when the smsagent service on the client is started/restarted. I was under the impression that the last logged on user was gathered from Active directory? I tested this by not logging off and on the client computer but only restarting the service and then check the "edit primary user" on the computer object in the sccm console.
-
- uda
- user device affinity
-
(and 1 more)
Tagged with:
-
We're getting ready to migrate to Office 365 from Office 2010 so I started playing around with the deployments. I found a few very helpful "How-To" guides - but all of them are having the same result. Office never actually finishes installing. So I begin by downloading Officedeploymenttool.exe and extract the contents to my network share. I run setup.exe /download /download.xml with this XML file <Configuration> <Add SourcePath="\\srvr\software\Office365" OfficeClientEdition="32" > <Product ID="O365ProPlusRetail"> <Language ID="en-us" /> </Product> <Product ID="VisioProRetail"> <Language ID="en-us" /> </Product> <Product ID="ProjectProRetail"> <Language ID="en-us" /> </Product> </Add> <Updates Enabled="TRUE" UpdatePath="\\srvr\software\Office365\Updates" /> <Display Level="None" AcceptEULA="TRUE" /> <Logging Level="Standard" Path="%temp%" /> </Configuration> The file share then becomes populated as so So now when I run setup.exe /configure /install.xml with this XML file <Configuration> <Add SourcePath="\\hcnsrvr6\software\Office365" OfficeClientEdition="32" > <Product ID="O365ProPlusRetail"> <Language ID="en-us" /> </Product> <Product ID="VisioProRetail"> <Language ID="en-us" /> </Product> <Product ID="ProjectProRetail"> <Language ID="en-us" /> </Product> </Add> <Updates Enabled="TRUE" UpdatePath="\\hcnsrvr6\software\Office365\Updates" /> <Display Level="None" AcceptEULA="TRUE" /> <Logging Level="Standard" Path="%temp%" /> </Configuration> The only thing that gets installed is this on the local machine At this point the installation registers as complete - and there is no office software available. I am not sure if there's another step I am missing? Every guide I read suggests that at this point I should have the suite installed... Any advice would be amazing. Thanks!
-
When I boot to PXE, SCCM 2012 SP1 CU1 deploys a task sequence to my unknown computer that is new out of the box. As soon as I put the task sequence password in, I get the following error that is attached. Can anyone help me understand why I cannot get past this step?
-
Hi Does anyone know the exact Windows firewall settings that will allow software packages to be distributed to a distribution point ? I keep getting a "ERROR DPConnection::ConnectWMI() - Failed to connect to ROBUHSCCM01 . error = 0x800706ba in the distmgr.log on the site server I can distribute the packages fine if I turn off Windows firewall completely, what to do ? The distribution point is installed on a Windows 7 Enterprise. I looked at the port settings on the TechNet page for SCCM 2012 SP1, where you must make a rule for RPC and SMB, port 135 UDP / TCP and SMB TCP port 445. Did I forget anything else?
- 3 replies
-
- Windows firewall
- Windows 7 Enterprise
-
(and 1 more)
Tagged with:
-
I have had a few clients that have had the request of having multiple business hours for differnt sites or departments for one reason for another. When you have alot of machines its not the best idea to just bounce to each machine and set the hours so I stumbled upon this and it has been a life saver. Go to Asset Compliance > Configuration Items and right click to create a new configuraton item. You create a discovery script to get your current settings: $cmClientUserSettings = [WmiClass]"\\.\ROOT\ccm\ClientSDK:CCM_ClientUXSettings" $businessHours = $cmClientUserSettings.GetBusinessHours() $businessHoursCI = [string]$businessHours.StartTime + "," + [string]$businessHours.EndTime + "," + [string]$businessHours.WorkingDays Return $businessHoursCI It will return a value like 7,19,62 for 7 am to 7pm Monday-Friday all you would do to modify that is use the script below and the chart to add up the days. Sunday 1 Monday 2 Tuesday 4 Wednesday 8 Thursday 16 Friday 32 Saturday 64 So if you would want Sunday - Saturday it would be 127 then 5am to 7 pm you would just modify the script to look like it does below. You create a remediation script to set new business hours: $startTime = 5 $endTime = 19 $workingDays = 127 $cmClientUserSettings = [WmiClass]"\\.\ROOT\ccm\ClientSDK:CCM_ClientUXSettings" $businessHours = $cmClientUserSettings.PSBase.GetMethodParameters("SetBusinessHours") $businessHours.StartTime = $StartTime $businessHours.EndTime = $EndTime $businessHours.WorkingDays = $WorkingDays Try { $result = $cmClientUserSettings.PSBase.InvokeMethod("SetBusinessHours", $businessHours, $Null) If ($result.ReturnValue -eq 0 ) { "Success." } Else { "Failed to set SCCM client business hours." } } Catch { "Failed to set SCCM client business hours." } You can then deploy that to every machine or if you would like to have multiple business hours you would make multiple configuration items then just deploy them to seperate collections. This has come in handy for me being able to set multiple business hours across a company, I hope somebody else finds it useful. Bryan
-
Automatic Deployment Rules Cant creating Software update group/Deployment i tried to Deploy all windows 8 updates in my windows 8 environment. i had created manual software update and pushed SU and installed for all windows 8. then i create 1 ADR for only windows8 devices. it has , Date Released or Revised : last 1 week (7days) Product: windows 8 Superseded : No Evalualtion schedule : every 1 week Wednesday . i saw that, this rule ran but not created any software update group or deployment. and No error come up. please Help me out. if you need any more information please let me know. Thank you
-
I have been playing with the side by side migration tool in sccm 2012 and have a few questions. I built a test lab (lab.local 1X DC - win2008r2 running dhcp and dns 1X sccm 2007 sp2 r3 server 1X sccm 2012 r2 server I then went and configured sccm 2007 to do the following, which all work fine OSD , build, capture, patch at build Application delivery (single flash player application) Then built an sccm 2012r2 server (local sql etc) Ran the migration tool and specified the source hierarchy. This all worked well, found items to migrate etc. I then migrated various test bits, boundary, collection, and package. I noticed my package had migrated by the package source was still located on the sccm 2007 server. If I were to decommission the sccm 2007 server, this would then break. Do I need to manually recreate a package source, manually populate (copy) the source files / applications / packages across. - Then migrate and manually adjust the package source on the sccm 2012 server to point to the new package source and redistribute ? Any experience or pointers would be nice, as the tool itself looks to be really useful. Just wondering if I have missed something ?? Any pointers appreciated ! Regards WAZZIE
- 1 reply
-
- side by side
- migration
-
(and 1 more)
Tagged with:
-
Hi guys, Hopefully this will be a really simple question to answer. A customer has just asked me if I can provide the official statement from Microsoft that states what kind of CM12 database access and manipulation would make this an unsupported configuration. Whilst those of us long enough in the tooth know better than to pry too far into the database using anything other than the ConfigMgr console, I wondered if anyone had a link to the official steer from Microsoft? Thanks, Ian.
-
Hi, I have 1 site thats running SCCM 2007 with IP ranged boundaries and a site with SCCM 2012 running on same IP ranged boundaries. The problem is that the SCCM 2012 site automatically creates boundary groups and boundaries of the old SCCM, pointing the clients to the wrong distribution points. Is there any fix for this, to avoid clients being pointed to the wrong DPs. I have tried setting deny read in AD, on the System Management container, for both SCCM server objects, but they are still created.
- 2 replies
-
- boundary group
- sccm 2012
-
(and 3 more)
Tagged with:
-
Firstly can I say I love this website, it has helped me out lots of times, I've never had official SCCM training and I've implemented and support SCCM at my college, with great help from here! The problem I'm having now is since I've upgraded to SCCM 2012R2 its extremely slow at downloading images when deploying an OS to a computer. It was working fine on SCCM 2012 SP1. The SCCM Server is running on VMware 5.1 and is using the VMXNET 3 network card. Hope someone can help. Thank you.
-
Experiencing an extremely frustrating problem. ENVIRONMENT: 1 Primary Site Server / DP (Main Office) 40 DP's (Remote School Locations) - Hosted on a file server VM - Contains 3 partitions: C: (System), E: (Data), I: (PKG share) OS: Server 2008 R2 (Primary Site Server and File Servers / DP's) SCCM Version: SCCM 2012 R2 We recently upgrade to SCCM 2012 R2. I have confirmed that this has not caused the problem I am about to describe. The only other change that has occurred recently is that we configured all of our DP's at each of our 40 sites to be pull distribution points. While this seems to be working fine we are now seeing a whole bunch of 0 Byte alpha numeric folders with a 0 Byte amd64 subfolder. These folders seem to attach to the E: drive on all of our File server distribution points....for the life of me I cannot figure out why and this occurred as soon as we switched to pull distribution points. While this does not seem to be having an erroneous effect on our environment, it is annoying and somewhat disconcerting as I have not been able to ascertain what is causing it. Any SCCM admins out their ever encountered this? Thanks
-
- sccm 2012
- pull distribution points
- (and 3 more)
-
Hello all, I am getting the "ProxyDHCP service did not reply to request on port 4011" error. This is only on certain models, while they are on certain VLANs in our environment. I've checked and the routes are the same on these VLANs as they are at some of our other sites. I have also made sure that DHCP is setup the same for those VLANs as it is everywhere else in our environment. While looking around, I've found articles that said to make sure both boot images are on the distribution point, and they are. I have been fighting with this for about two weeks and don't know what else to do. The SMSPXE log doesn't show that anything is wrong. It shows the same for machines that I can actually PXE boot. Any help is appreciated!
-
- ProxyDHCP 4011
- SCCM 2012
-
(and 1 more)
Tagged with:
-
Hello There! I am trying to figure out the best way to inject/ include security patches on to SCCM 2012 with out disturbing WIM Image (as this is the new feature introduced from SCCM 2012) and no DISM process involvment and no installs of patches from a shared location(WIM injected with script to target the shared location and while WINPE has loaded the patched after the first boot sequence where in the script tries to pull the patches from the shared location). These are not the solutions for me right now. I am looking for a solution where in I can upload the patches offline with out disturbing the WIM image. I heard there is such a provision where in we can do a offline servicing which is quiet faster compared to DISM. Anyone have any idea on this process? Vasu
-
Hey guys- I am pretty new to SCCM, but I setup a SCCM 2012 SP1 CU4 server. I am using it for Endpoint Protection and Windows Updates. I have been reading on how to use PXE and have followed several guides to get this working. Right now my workstation will successfully boot using PXE. My problem is that the machine reboots immediately after "Preparing Network Connections." I do get an IP address when I push F8 so it's not a network driver issue. I am attaching my smsts.log file. There are 4 error lines in red, but I cannot figure out how to fix this. Coult not create WMI locator class (80040154) Failed to connect to WMI namespace \\.\ROOT\CIMV2 (Code 0x80040154) RegOpenKeyExW failed for Software\Microsoft\SMS\Task Sequence GetTsRegValue() failed. 0x80070002. Any help would be great! Thanks smsts.log
-
Hello All, We are currently using SCCM 2012 SP1 for OS Deployment and i have been working on a HP elitebook 820 G1 and probook 650 G1. Both build successfully but do not install any device drivers. I have downloaded the driver package from HPs website, extracted all the drivers (inf,sys,cat) and put them into 'one' folder, i then created a driver package and imported the drivers into the package and category. In the task sequence i have created a 'apply driver package task' with the wmi query for this model, i have also tried disabling the 'auto detect drivers' so that it doesn't look into the DB. So far i haven't had any luck and have been working on this for over a week. I have looked at the smsts log on the workstation after the build and there are no errors relating to drivers. Any help will be appreciated
- 9 replies
-
- SCCM 2012
- Device Driver
-
(and 1 more)
Tagged with: