Jump to content


Search the Community

Showing results for tags 'SCCM 2012'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Cloud
    • Azure
    • Microsoft Intune
    • Office 365
    • Windows 365
  • General Stuff
    • General Chat
    • Events
    • Site News
    • Official Forum Supporters
    • Windows News
    • Suggestion box
    • Jobs
  • MDT, SMS, SCCM, Current Branch &Technical Preview
    • How do I ?
    • Microsoft Deployment Toolkit (MDT)
    • SMS 2003
    • Configuration Manager 2007
    • Configuration Manager 2012
    • System Center Configuration Manager (Current Branch)
    • Packaging
    • scripting
    • Endpoint Protection
  • Windows Client
    • how do I ?
    • Windows 10
    • Windows 8
    • Windows 7
    • Windows Vista
    • Windows XP
    • windows screenshots
  • Windows Server
    • Windows Server General
    • Active Directory
    • Microsoft SQL Server
    • System Center Operations Manager
    • KMS
    • Windows Deployment Services
    • NAP
    • Failover Clustering
    • PKI
    • Hyper V
    • Exchange
    • IIS/apache/web server
    • System Center Data Protection Manager
    • System Center Service Manager
    • System Center App Controller
    • System Center Virtual Machine Manager
    • System Center Orchestrator
    • Lync
    • Application Virtualization
    • Sharepoint
    • WSUS

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Location


Interests

  1. Hi There, Looking for a bit of advice, relatively new to SCCM 2012 but have experience looking after SCCM 2007 R3. I have inherited a SCCM 2012 R2 configuration manager system which has no CAS, one primary site server (SQL is on box on a dedicated RAID 10 volume) and 6 DP's. All servers are running Windows Server 2012. The issue, the installation of configuration manager on the primary site server has been installed onto the OS volume, it's a RAID 5 volume and the system seems to be running fine with about 150GB free space, though it's still in testing and only has about 10 clients reporting back. The server has enough bays free to setup a dedicated raid 10 volume for configuration manager to reside. From reading the TechNet articles for planning a primary site server it mentions for best performance use Raid 10 for the configuration manager install and SQL. I guess what I'm looking for are options, the system is still in testing no live machines have been migrated over but most of the applications have been created and the system from what I can see is a couple of weeks away from being ready to go live. I guess I'd like to know 1. Will there be a negative impact in terms of performance, scalability (we have 15k clients), resilience etc and would this justify starting over again i.e. wipe the box and a total reinstall - a last resort I hope! 2. It seems madness to me it's been installed on the OS volume, so can it be moved either by doing a back up and restore using config manager once a Raid 10 volume is created on the same primary site server box or could we purchase a new server and use the migration wizard to migrate the installation over and configure it to use the correct volumes. 3. Create a secondary site on a new box with the correct installation on raid volumes and look to promote and replace the current primary site server with this new box 4. Are there any other options that I'm not considering, has anyone any experience of config manager 2012 being installed on the OS volume and suffered negative effects, or has anyone tried to move config manager install off the OS volume? If there's any guides or documentation someone could share I'd be grateful. I would welcome any advice and info about this as soon as possible as I'm confident a decision will need to be made fairly quickly Thank you in advance, please let me know if you need more information Regards
  2. Hello Not sure where to post this so sorry if in worng place Thank you for reading my post. I am brand new to scripting so my apologies if this is rather basic – But everyone starts somewhere. We are running Windows 7 desktop on a 2003 Enterprise domain. I need to copy some short cuts files (eod8 extension) to the start menu under “All Programs” in a folder called “EOD”. The users must be able to save and open the shortcuts (so using the All Users folder did not work since a standard user can’t save to that location) So I am copying the files to the local user profile. My Script setlocal set Installpath=%~dp0 mkdir "C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\EOD" echo "No" | xcopy "%Installpath%*.eod8" "C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\EOD" /d ENDLOCAL Timeout /T 1 When I run the script locally it works – When I deploy through SCCM It fails “Unable to find the file *.eod8” – What I have noticed is that If I go to C:\Windows\ccmcache\XX And edit then close the script file (no change has been made) it works through the Software Center From my limited knowledge I think my issue could be with the location\path of my script Thanks for your advice
  3. Hello I hope somebody can help me, I've created an xml file to hide wireless options during task sequence deployment and also wish to set locale settings to English GB within the same script. However the task sequence constantly fails despite trying plenty of variations. I am using SCCM2012 R2. Here is the script I am using: <?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="oobeSystem"> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <OOBE> <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> </OOBE> </component> </settings> <settings pass="oobeSystem"> <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <InputLocale>en-GB</InputLocale> <SystemLocale>en-GB</SystemLocale> <UILanguage>en-GB</UILanguage> <UILanguageFallback>en-US</UILanguageFallback> <UserLocale>en-GB</UserLocale> </component> </settings> <cpi:offlineImage cpi:source="wim://gcsc318a/sccm/osd/images/windows%208.1/enterprise%20x64test/sources/install.wim#Windows 8.1 Enterprise" xmlns:cpi="urn:schemas-microsoft-com:cpi" /> </unattend> Any suggestions would be greatly appreciated, I'm sure it's something simple but I just can't seem to get my head around it. I know both sections of the xml file used separately work fine, the hide wireless hides the wireless and locale settings set to en-gb when separated from each other. Many Thanks!
  4. Hello Everybody, I am new to SCCM 2012 and have been struggling with an issue for the past 3 days and am tired of hitting my head against a brick wall. Here I'm deploying Windows 7 x64 and it installed perfectly fine onto the required Hardware & VM. Although in both platforms the Task Sequence fails straight away with the exact same error in the SMSTS.log file. I cant make heads or tails of the actual log file and needs some help to decode the endless lines of code Can someone point me in the right direction?
  5. Hi IT geeks I would like to hear about is anyone here who can understand my workflows. I would like any input from you .( ) http://www.learnmesccm.com/windows/sccmcollections.html kind regards sg
  6. Hello, We have switched from using Symnatec Ghost for Capturing and Deploying images to using SCCM 2012. The procedure we would typically use for Ghost when we got a new machine is as follows: (General Idea) 1. Load Windows 2. Load Drivers 3. Load Updates 4. Load Software 5. Create image by Pxe'ing to our ghost server and saving this image. 6. Use PXE in Ghost to deploy the image to all other same model computers. Currently with SCCM i'm doing the same first 4 steps then: 5. Capture image using capture media saving OS 6. Deploy using PXE to SCCM Server. Is there anyway to eliminate the need for the capture media and run it from a PXE? I know there are other ways to do this i just haven't learned them yet.
  7. Hi all, Forgive me if this has already been covered, but I haven't been able to find a solution. Using SCCM 2012 R2, is there a way to receive email alerts when members of a collection complete updating?If possible, with the compliance percentage showing. (Please note that email notification is configured on the site server). Thanks in advance.
  8. Hi All, Could you please recommend me any sort of data or link which explians how SCCM works internally, about design concepts and working principal of ConfigMgr. I have gone through many sites and videos but they only talk about how to work on SCCM with features however they do not talk about how SCCM works\inner working of ConfigMgr. Thanks very much in Advance! Regards, Chandan
  9. Hi Im wondering if anyone in here has some experience in deploying Bitlocker encryption from a SCCM task sequence? The steps in my task sequence have each been tested ok, want to make sure that it assigns the group policy that makes it required to save the Bitlocker recovery key in the AD under computer properties. I want to make sure it continues from Step 5 after it completes Step 4 (see my attached screenshots). The script source is this one: http://gallery.technet.microsoft.com/780d167f-2d57-4eb7-bd18-84c5293d93e3#content I have seen on test runs that this .vbs script will force a restart of the laptop, if the TPM chip is not activated outside Windows. Any good advice or best practice to this is appreciated. It is around 400 Lenovo laptops that needs to have Bitlocker encryption on in our enterprise, the oldest we have is the T60/T61 model and the newest is the T440 and X240 from last year. PS Is there also a best practice for getting this to work in an OS Deployment TS ? So far the one Microsoft have by default in SCCM doesn't work as automatic as I want it to be
  10. Hey All IT guys, I have a problem with setting up the lab enviroment - I have 2 VM's running WinSRV 2008 R2 One is DC and second is running SQL server 2008 SP3 with CU 16 - version 10.0.5852.0 I getting below error while trying to install SCCM 2012 - Also logs shows this: 9/18/2014 9:47:55 AM: ConfigMgrSetupWizard Information: 1 : Cannot detect SMS Type because either SiteServer, SqlServer or SiteServerName is empty. 9/18/2014 9:53:29 AM: ConfigMgrSetupWizard Information: 1 : Creating SQL connection to database master on server CAS.ACME.net. 9/18/2014 9:53:30 AM: ConfigMgrSetupWizard Information: 1 : Sql connection is established. Can you please advise what to do?
  11. Hi, I have some specific requirement in SCCM 2007 & 2012. I need to create a master patch for Windows 7 machines. When ever any machines formatted and added to the domain, patch should get installed automatically from the master patch list and it should not get expire at any point of time. Is it possible to create like this.? Regards, Logan IN
  12. Hello, I'm fairly new to modifying the MOF file in SCCM to extend the hardware inventory. I've used it once to collect specific key/string values using RegKeyToMof in the past. I'm looking to collect the string names and values for an unknown set of strings in a specific location in the registry and I'm uncertain on how to do so. My specific use case is to collect HKLM\Software\Microsoft\Windows\CurrentVersion\Run and HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce. These keys control what software is loaded at start-up and could have any number of string names and values. I've looked for solutions online without any success, any help would be much appreciated. Thanks, Jones
  13. We have an existing SCCM 2012 primary site, no CAS. We just bought another company with their own existing primary site. Is there a way to add that site to our existing site without having to reinstall all of the clients? Can we make it a secondary site?
  14. This question is prompted by, but not necessarily limited to, Java and it's frequent updates. What's the best way to configure an application in SCCM when new versions of the app are released and need to be deployed frequently? For Java, I've been creating a new Application in SCCM each time a new version comes out, naming it "Java 7 update 473" or whatever. I set it to supersede, and to uninstall the old version rather than upgrading. I deploy the new version, delete the deployment of the old version, and retire the application for the old version. Then, if I remember to, I go edit our OSD task sequence, removing the version of java from the Install Applications step and replacing it with the new version. If I forget, then the next time our desktop tech goes to re-image a machine it fails. That works, but it seems like there must be a better way. Preferably, an option that doesn't leave my Applications list with a dozen Retired application entries for versions of the same program. (I'm sure I can just delete the old ones at this point, but that's not really the point.) I considered just having one application for Java and creating a new Deployment type. Then I wouldn't have to update the OSD task sequence each time, or deploy new versions and retire old versions of the app each time. I'm not sure that would though, work since supersedence is configured at the application level. I need to be sure old versions get uninstalled when the new version goes in. How do others handle frequently updated applications such as this?
  15. I have an issue with OSD Captures in 2012, since we cant import 2007 wim files. The computer will init the TS and go through all of it except the sysprep portion. That fails out. I have the logs from the client with some very non descriptive errors. The OS install doesnt look like its done before sysprep kicks in. smsts.log smsts-20140812-162414.log
  16. Hi all, I am having some issue's with WSUS and SCCM 2012 and I have only been using it a few months so I am very unfamiliar with the logs / log locations. We have Sys Center 2012 R2 installed. Each application (SCSM, DPM, etc.) has its own dedicated server. We have an upstream server for WSUS that downloads all updates (Server 2008 R2). SCCM is pointed to the WSUS Server in Site configuration -> Software Update Point -> Sync Settings -> Sync from upstream data source GPO Is set up for each group (Download, Download & Install, Download & Notify, etc.) and RSOP shows it is working. In SCCM -> Monitoring -> System Status -> Component Status - There are three components with Critical status SMS_WSUS_SYNC_MANAGER SMS_WSUS_CONFIGURATION_MANAGER SMS_WSUS_CONTROL_MANAGER I'm not even sure where to start. Please Advise & TIA! :)
  17. I am having an issue with my SCCM 2012R2 network. An Increasing number of clients have stopped checking in. Software Center is blank and nothing is advertised. I have to reinstall the client from the console to get it working. once the client is re-installed software center is populated again. Any idea of what causes this and how can i prevent it? BTW this is going over a large Geographically dispersed WAN
  18. First off I would like to say that I have searched for anything remotely related to this issue. I can find bits and pieces of the issue, but nothing that directly answers the question. I am trying to capture an image using SCCM Media capture on a USB stick. I have done this without any issue at least 20-30 times. I have finally hit a brick wall. The capture process make it to about 50% (23GB of 50GB) of the image and then it bombs. I have attached my log in hopes someone can help me figure this out. Using CMTrace and I see the failures just not sure why. I will be happy to answer any questions and try any solution provided. smsts.log Thanks!
  19. Hey, I'm hoping someone can point me in the right direction. I'm having an issue in getting my application pool identity cmWebSvc to have enough permissions to query the SCCM SQL database. If I use my CMAdmin account the web service returns results as expected. This is how I currently have it configured but it doesn't seem to be enough.. Could anyone shed some light? Thanks!
  20. 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 } #>
  21. I want to install Windows 7 Enterprise on a machine using SCCM 2012 OSD. The machine already has Windows 7 professional installed on it. The machine has 2 drives C: and D: created on a single HDD. I want to retain the user data on Drive D as it is. The size of data on D drive is huge, and I don't want to waste time backing it up and restoring the same on the same machine. I want to retain 2 drive structure. I don't want backup data on a USB (using Easy transfer or similar tool), not do I want to use USMT to copy D drive data on to a server share location. Any suggestions on how to go about it?
  22. 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?
  23. Hi Everybody, this thread is for those who want the old SCCM 2007 driver management back. Normally you have to import every driver to the database first, put them into a driver package, and then deploy them during OSD. In SCCM 2007 you could easily create a Driver Package from your Driver Source Folder and apply this Driver Package during OSD. This way of Driver Management was much easier and more reliable than the new way in SCCM 2012. But luckily there is still a method to prevent importing drivers into database and directly distribute driver packages to your clients. Step 1 Download drivers for your brands and models. Put them into seperate folders - one folder for one model - like you did in SCCM 2007 Step 2 Create a Package for each model and operating system. Then distribute this packages to your DP. Step 3 Create a Step "Set Task Sequence Variable" under your Auto Apply Drivers Group (after the Apply Operating System Step) in your Task Sequence. Task Sequence Variable: winrootdir Task Sequence Value: D:\ Condition: If Folder "D:\Windows" exists I created a second step after this with Drive Letter E:\. Because on some Notebooks the Systemroot is E:\ during OSD. Step 4 Create TS Steps for each model to apply the driver package. Type: Run Command Line Command line: DISM.exe /Image:%winrootdir% /Add-Driver /Driver:.\ /Recurse Package: Choose the corresponding package you created in step 2 Success codes: Add 2 and 50 Condition: WMI Query (here an example for Dell Latitude E7240) select * from win32_computersystem where Model like "Latitude E7240%" Repeat the steps above for each computer model you want to image. With this way of applying drivers we have 0 problems in our environment. Very easy and reliable. BR Achim If you have questions - feel free to contact me http://ithilger.de/kontakt
  24. 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!
  25. 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
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.