Search the Community
Showing results for tags 'configmgr'.
-
With the imminent public release of Windows 10 I have been readying my test environments to be able to deploy and test Windows 10. This is a quick overview of the main deployment scenarios supported and some links to thesoftware you will need. Also I’ve included some links to a selection of videos from the MS Ignite conference that I found the most useful for someone new to Windows 10 deployment. Deployment Scenarios The main deployment scenarios are:Wipe and LoadIn-place UpgradeProvisioning Wipe and LoadThis is the traditional process and follows these general stages:Wipe deviceDeploy customised OS imageInject driversInstall applicationsOptionally this can include steps to capture and restore user data and/or settings if present on the device (usually laptops). Wipe and Load can be done with both MDT and ConfigMgr. ProsDevice will be in a known new stateRemoves any remnants of old installations, updates and obsolete applications. Over months and years performance and disk space can be adversely affectedCan use a custom image that could be pre-updated, or contain applications that rarely change - this can drastically improve deployment timesConsCan have a longer deployment time due to re-installation of all applications post-deploymentMust have driver packages available for all machine variantsCreating scripts to capture and restore user data can be time-consuming In-place UpgradeThis is a newer scenario available for clients running Windows 7/8/8.1. Windows setup does most of the work for you:Save existing user data, settings, applications and driversDeploy original Windows 10 imageRestore everythingThis is a new scenario introduced with Windows 8.1 and Windows 10 and it will be interesting to see how it works in anger. In the Microsoft presentations I’ve seen this is being advertised as the preferred method for upgrading from Windows 7 and 8. I personally prefer a wipe-and-load so that I know everything is clean. Also, new OS deployment is often used as an good opportunity to upgrade major software like Microsoft Office which makes some of the in-place upgrade benefits redundant.One scenario I think may benefit is the ability to get a Windows client from an OEM and easily upgrade it to Windows 10 while keeping all the drivers it has. Getting the driver packages for new machines was a burden for some smaller companies. ProsPreserves all data: user data, setting, applications and drivers and therefore is potentially less riskyDon’t always require new drivers if existing drivers are compatibleOften a shorter deployment timeRequires less preparationConsCannot use a customised image, the original Windows 10 media must be usedIf a machine had obsolete installations and settings these will remain Provisioning This is another new Enterprise-focused scenario designed to help with the situations where a company wants to ship a new Windows 10 machine directly from the OEM to a user and then have enterprise software and policies applied to that machine to bring it into compliance.This is controlled by a provisioning package (.ppkg) that is obtained and executed on the target machine and can perform the following operations:Change Windows 10 version from Pro to Enterprise and add in Enterprise features, updates and language packsRetains drivers and applicationsInstall or remove Modern UI applications Enrol into a domain or management solutionProvisioning packages are created with the new Windows Image and Configuration Designer (Windows ICD) tool. ProsCan change Windows from Pro to Enterprise - this previously required a wipe-and-loadEnables Bring Your Own Device (BYOD) scenariosCons The available policies are a small - but useful - subset of those available in Group PolicyYet another tool to go into the toolkit along with WinPE, WIMs, MDT, ConfigMgr. Many organisations already struggle with the best way to deploy and now we have a choice of bespoke vs MDT vs ConfigMgr vs MDM vs Windows ICDFor remote installations, you need a delivery mechanism and the .ppkg files involved may be largeThe only applications that can be installed are Modern UI applications. PowerShell scripts and Win32 applications are in the long-term plan. Deployment Tools and KitsHere are links to the toolkits you need for MDT and ConfigMgr to deploy Windows 10. Many are in beta or RC stage - I’ll update the links when the final versions are publicly available.MDT 2013 Update 1 Preview (Windows 10 support)ConfigMgr 2012 Service Pack 2 (Windows 10 support. Ignore the evaluation part. This applies for both 2012 and 2012 R2)Windows Assessment and Deployment Kit (Windows ADK) for Windows 8.1 Update (Windows 8.1 WinPE is used in ConfigMgr 2012 for deployment and works fine for Windows 10)Windows Assessment and Deployment Kit (Windows ADK) for Windows 10 Preview (Contains the Windows ICD) VideosHere are a selection of videos from the MS Ignite conference in May 2015 that I found the most useful:What’s new in Windows 10 DeploymentWhat’s new with ConfigMgr OSD and MDTDeploying Windows 10: Back to BasicsUpgrading to Windows 10 in DepthTroubleshooting Windows 10 Deployment: Top 10 Tips and Tricks
- 5 replies
-
- windows 10
- mdt
-
(and 2 more)
Tagged with:
-
I'm having a heck of a time trying to figure out how to call/invoke a WMI method through Autoit. I have a Powershell script that checks if a reboot is required using multiple checks including a WMI method related to ConfigMgr/SCCM but I want to do this in Autoit because I have a script that does other things and prompts the user to reboot if needed. I've given up on trying to make Autoit run the Powershell script and capture the true/false return value so since I know how to do everything the Powershell script does in Autoit, minus this WMI method call, I figured I'd take a stab at doing all of it in Autoit. The WMI method involved is called DetermineIfRebootPending in the root\ccm\ClientSDK namespace in the CCM_ClientUtilities class. I've done some searching on the forums here and saw many references to the Scriptomatic so I downloaded that and when I run it, since (I'm guessing) there are no properties in the CCM_ClientUtilities class, it doesn't show up as an available option in the class dropdown (see attached image), so it doesn't seem like Scriptomatic is going to help me here unless I'm missing something. Here is the Powershell part that I'd like to convert to Autoit. $CCMClientSDK = $null $CCMSplat = @{ NameSpace='ROOT\ccm\ClientSDK' Class='CCM_ClientUtilities' Name='DetermineIfRebootPending' ComputerName=$ComputerName ErrorAction='SilentlyContinue' } $CCMClientSDK = Invoke-WmiMethod @CCMSplat If ($CCMClientSDK.IsHardRebootPending -or $CCMClientSDK.RebootPending) { $SCCMReboot = $true } So as you can see, its invoking the DetermineIfRebootPending method and then checking the IsHardRebootPending and RebootPending properties to see if they are True or False. If either are true, it sets the $SCCMReboot to true and later on down the script, it returns that value to the pipeline after checking some other registry locations to determine if reboot is required. If anyone could help me either 1) convert the above code to Autoit or 2) figure out how to run the powershell script from within Autoit and capture the return value, I'd be forever grateful. Thanks!
- 2 replies
-
- wmi
- powershell
-
(and 3 more)
Tagged with:
-
This is a script I did ages go to fix problems when you have a lot of DPs on ConfigMgr 2012 and some of the packages are in a stuck or failed state. It's a massive pain to try and fix it manually. ' **************************************************************************** ' ' Purpose: Checks all packages assigned to a DP and redistributes any with errors. ' ' Usage: cscript.exe CM2012_DP_Redist.vbs ' ' Version: 1.0.0 ' ' History: ' 1.0.0 20-Nov-2013 - Jonathan Bennett ' First version. ' ' **************************************************************************** ' **************************************************************************** ' Global constant and variable declarations ' **************************************************************************** Option Explicit ' CHANGEABLE VARIABLES ' The name of the CAS/Primary site server Public Const CASServerName = "CASSERVERNAME" ' Which DP to refresh packages for - leave this blank to check ALL DPs Public Const DPServerName = "DPSERVERNAME" ' END OF CHANGABLE VARIABLES Public Const wbemFlagReturnImmediately = 16 Public Const wbemFlagForwardOnly = 32 Dim oSWbemServices ' **************************************************************************** ' End declarations ' **************************************************************************** ' **************************************************************************** ' Main routine ' **************************************************************************** ' Connect to CM 2012 (CAS) If ConnectServer(CASServerName) = False Then WScript.Echo "Unable to connect to server." WScript.Quit 1 End If ' Find all packages with a bad status Dim queryString Dim dpStatuses, dpStatus, serverName, packageID, packageDPs, packageDP, nalPath If DPServerName = "" Then queryString = "SELECT Name,PackageID,MessageState FROM SMS_DistributionDPStatus WHERE MessageState > 2" Else queryString = "SELECT Name,PackageID,MessageState FROM SMS_DistributionDPStatus WHERE Name LIKE '%" & DPServerName & "%' AND MessageState > 2" End If Set dpStatuses = oSWbemServices.ExecQuery(queryString,, wbemFlagForwardOnly+wbemFlagReturnImmediately) For Each dpStatus in dpStatuses serverName = UCase(dpStatus.Name) packageID = dpStatus.PackageID queryString = "SELECT * FROM SMS_DistributionPoint WHERE PackageID = '" & packageID & "'" Set packageDPs = oSWbemServices.ExecQuery(queryString,, wbemFlagForwardOnly+wbemFlagReturnImmediately) For Each packageDP in packageDPs nalPath = UCase(packageDP.ServerNalPath) If InStr(1, nalPath, serverName) > 0 Then WScript.Echo "Redistributing " & packageID & " on " & serverName & "..." packageDP.RefreshNow = True On Error Resume Next packageDP.Put_ On Error Goto 0 End If Next Next WScript.Quit 0 ' **************************************************************************** ' Functions ' **************************************************************************** Function ConnectServer(ByVal serverName) If serverName = "" Then serverName = "." Dim oSWbemLocator : Set oSWbemLocator = CreateObject("WbemScripting.SWbemLocator") On Error Resume Next Set oSWbemServices = oSWbemLocator.ConnectServer(serverName, "root\sms") If Err.Number <> 0 Then ConnectServer = False Exit Function End If On Error Goto 0 Dim ProviderLoc : Set ProviderLoc = oSWbemServices.ExecQuery("Select * FROM SMS_ProviderLocation WHERE ProviderForLocalSite='True'") Dim Location For Each Location In ProviderLoc Set oSWbemServices = oSWbemLocator.ConnectServer(Location.Machine, "root\sms\site_" + Location.SiteCode) Exit For Next ConnectServer = True End Function More details on this blog post: https://www.autoitconsulting.com/site/deployment/mass-redistribute-packages-configmgr-2012/
-
- configmgr
- configmgr 2012
-
(and 1 more)
Tagged with: