Quantcast
Channel: Deployment Research - Johan Arwidmark
Viewing all 168 articles
Browse latest View live

Links, Slides and Sample Files (Scripts) from NIC 2015

$
0
0

Here you find the links, slides and sample files from my Deploying Windows 10 in the Enterprise and OS Deployment at LEVEL 500 sessions at NIC 2015, in Oslo, Norway,

NIC
NIC 2015, great as always :)

Slides

Download: http://deploymentresearch.com/DRFiles/NIC2015-Arwidmark-Slides.zip

 

Sample files and scripts

Updated scripts to deploy Windows 10 using MDT 2013:
http://www.deploymentresearch.comhttp://www.deploymentresearch.com/Research/tabid/62/EntryId/223/Create-a-Windows-10-reference-image-using-MDT-2013.aspx

Windows 10 Upgrade task sequence from the ConfigMgr 2012 team:
http://blogs.technet.com/b/configmgrteam/archive/2014/10/29/how-to-upgrade-to-win-10-using-the-task-sequence-in-sc-2012-r2-configmgr.aspx

The script that exported task sequences was gathered from the following post:
http://trevorsullivan.net/2010/05/13/exporting-configmgr-task-sequences (by Trevor Sullivan)

The script that imported task sequences was gathered from the following post:
http://www.david-obrien.net/2012/09/29/how-to-backup-restore-your-tasksequenceconfiguration-manager-2012-and-powershell (by David O’Brien)

The New-TaskSequence.ps1 script that created native task sequence in ConfigMgr 2012 was gathered (and then modified a bit) from the following post:
http://www.jamesbannanit.com/2014/09/create-an-os-deployment-task-sequence-in-configuration-manager-2012-with-powershell (by James Bannan)

Here is the modified script:

Import-Module (Join-Path $(Split-Path $env:SMS_ADMIN_UI_PATH) ConfigurationManager.psd1)
cd PS1:

# Define Configuration Manager variables
 
$CMSiteCode = 'PS1'
$CMSiteServer = 'CM01.corp.viamonstra.com'
$CMNameSpace = "root\SMS\site_$CMSiteCode"

$Password = 'P@ssw0rd'
$DomainPassword = ConvertTo-SecureString -AsPlainText $Password -Force
$LocalAdminPassword = ConvertTo-SecureString -AsPlainText $Password -Force

 
# 1.0 Get Deployment Objects
 
$BootImageID = (Get-CMBootImage -Name 'Zero Touch WinPE 5.0 x64').PackageID
$OSImageID = (Get-CMOperatingSystemImage -Name 'Windows 8.1 Enterprise x64').PackageID
$ClientPackageID = (Get-CMPackage -Name 'ConfigMgr Client with Hotfixes').PackageID
  
# 1.1 Create Task Sequence
 
New-CMTaskSequence -InstallOperatingSystemImageOption `
  -TaskSequenceName 'Deploy Windows 8.1 x64 Enterprise' `
  -BootImagePackageId $BootImageID `
  -OperatingSystemImagePackageId $OSImageID `
  -OperatingSystemImageIndex '1' `
  -ClientPackagePackageId $ClientPackageID `
  -JoinDomain DomainType `
  -DomainName 'corp.viamonstra.com' `
  -DomainAccount 'VIAMONSTRA\CM_JD' `
  -DomainPassword $DomainPassword `
  -DomainOrganizationUnit 'LDAP://OU=Workstations,DC=corp,DC=viamonstra,DC=com' `
  -PartitionAndFormatTarget $true `
  -LocalAdminPassword $LocalAdminPassword<

Happy deployment,

/ Johan


More ...

Installing Samsung 840 EVO 1TB MSATA SSD in a HP 8570w

$
0
0

Yesterday was a good day! I finally could lay may hands on not only one, but two Samsung 840 EVO 1TB SSD MSATA cards, and went about to install them in my HP 8570w machines. I bought them at Fry’s in Seattle (well Renton, really), and because of their “Match Internet Price” deal, I did not have to pay the initial 549.99 USD price (each) they had, but rather the much better 409 USD price that Amazon sold them for.

SSDs
The MSATA card on the hood of our rental car for the week.

Installing the MSATA card

After turning off the HP 8570w, I removed the battery (I know, I’m a chicken), and then removed the bottom cover. When unpacking the Samsung MSATA card I realize they didn’t ship any screws, so rather than have the MSATA card hanging loose, I borrowed a screw from the normal hard drive bay (will replace it later).

SSDcard 
The MSATA Card installed in the HP 8570w.

 

Borrow
The MSATA Card installed

Card not found

After booting into Windows, I realized the card was not detected, even though I hade enabled MSATA in BIOS previously. It turned out I simply had to visit the BIOS setup once (without any setup changes at all), for the machine to pick up the card. I had to do this for both my HP 8570w machines, so apparently it’s a “feature”.

Checking firmware

For those of you using Samsung SSD’s in the past you probably know they had a performance issue that was fixed in a firmware upgrade released in October 2014. The firmware is available for download on the Samsung website (direct link). Get the Samsung Magician.

Luckily the drive a bought already had the latest firmware.

image
Checking disk drive firmware.

All in all, the SSD is ready be used.

image

/ Happy deployment, Johan


More ...

Using USMT from Windows 10 ADK to migrate 3rd party drivers

$
0
0

A new feature in USMT 10 (from the Windows 10 ADK technical preview) is it’s ability to migrate 3rd part drivers (and apps) via the new provisioning packages in Windows 10. I’m not sure why anyone would migrate drivers this way (yet), but it least it caught my interest enough to play around with the the feature :)  Another interesting thing is that there is a ARM version of USMT as well…

Note: The drivers capture feature in USMT 10 is quite similar to use the Export-WindowsDriver cmdlet that was introduced with Windows 8.1, except that it stores the drivers in a WIM file (provisioning package, PPKG extension,). In the Windows 10 ADK Technical Preview, the PPKG (WIM) files that are created are not compressed. I don’t know why, but I hope that will change in the released version.

 

New command line switches for Scanstate to migrate apps and drivers

There is a bunch of new command line switches to scanstate, but the /ppkg /drivers and /apps controls the apps and drivers migration feature. The /apps feature seems to be broken in the Technical Preview, but the /drivers feature is working fine in my testing.

Disclaimer: Since drivers are normally handled by the deployment solutions, I haven’t yet figured out any real world usage for this new feature. Please comment below if you find this feature useful (and why).

Anyway, the command line switches that controls apps and drivers migrations are the following:

  • /ppkg
    Specifies that the migration store is a provisioning package. Can't be used with /nocompress, /hardlink or /p.
     
  • /drivers[:
    Specifies that USMT should migrate 3rd party drivers. By default all drivers are migrated. can be used to select drivers to migrate. They are of the form +n:, -n:, +p:, -p:,+c:, -c:, where +-n can filter the migrated driver by the name of the INF file, +-p can filter them by publisher and +-c by class name or class GUID. Multiple /drivers are allowed, The last pattern matching a particular driver wins. /drivers must be used with /ppkg.
     
  • /apps
    Specifies that USMT should migrate 3rd party applications. A provisioning package captured this way can only be applied during the deployment process, it cannot be used with a normal apply process with Loadstate.exe. Also, /apps implies that no user data will be migrated, /ui /ue will be ignored. /apps must be used with /ppkg. /apps cannot be used with any /target switches.

Note:  3rd party applications are Windows store applications, not Windows Desktop applications.

 

Testing the drivers feature

To capture drivers from a system and create a provisioning package you run the following command (the /ue switch is optional but I didn’t want to capture any profiles):

scanstate.exe /drivers /ppkg /ue:*\* \\FS01\MigData\PC0001

When running this on my machine, it generated a PPKG file of 1.63 GB.

image
The output from running scanstate with the new /drivers switch.

 

Looking into the drivers provisioning package

If you seen my earlier video on create provisioning packages using Windows ICD you know the PPKG file is really just a WIM file, meaning it’s easy to either mount with ImageX/DISM. For most of the provisioning packages, but not all, I have also been able to use 7-Zip to open the file since it can open some WIM files.

As I mentioned before, when running scanstate to capture the drivers on my machine, it generated a PPKG file of 1.63 GB. As I mentioned earlier, in the Windows 10 ADK Technical Preview, the PPKG files that are created are not compressed (don’t know why), but I hope that will change in the released version.

image
The resulting provisioning package.

After mounting the PPKG (WIM) file to E:\Mount, you see the following:

 

image

In the Drivers folder, there is a bunch of subfolders, one folder for every drivers, and also a Driver.xml file holding a list of all drivers.

image

There is a snippet of the Driver.xml file.

image

 

ARM version of USMT

image


More ...

What is REALLY new in MDT 2013 Update 1 Preview

$
0
0

As you probably seen the the MDT 2013 Update 1 preview was released on March 2, the official announcement by Aaron Czechowski lists the below list of features:

  • Support for Windows 10 Technical Preview
  • A new ZTIUtility function, GetMajorMinorVersion
  • Split WIM support for UEFI media scenarios to avoid the 4GB limit (works but badly implemented in the console, see note further down for details).
  • Support for Windows 10 ADK Technical Preview, which is also a prerequisite for MDT 2013 Update 1 preview
  • Minor Updates to the Deployment Workbench

Note: MDT 2013 Update 1 Preview is for Lite Touch deployments only, don’t use with ConfigMgr 2012 R2.

So is that it? Maybe, let’s take a closer look :)

What’s still broken in the preview

Before diving into the new features, here is a list of some key things that still not work. I was kind of hoping more of the many known bugs would be fixed, but so far nope… Hopefully they will be fixed in the final release.

  • The Microsoft.BDD.MonitorService.exe.config still contains system.diagnostics that will literally kill any deployment server having a C:\temp folder, and that is using the Monitoring feature.
    • Workaround: Modify the Microsoft.BDD.MonitorService.exe.config file per this article.
  • The PowerShell script output to create deployment shares automatically is still not correct.
    • Workaround: Use this syntax instead.
  • The PowerShell script output to create offline media automatically is still not correct.
    • Workaround: Use this syntax instead.
  • Deployment Workbench still crashes, and spikes the server CPU to 99 percent, when configuring a custom background for the boot image.
    • Workaround: Use PowerShell to configure the deployment share as explained in this post, or simply try a few times in the Workbench, only changing the custom background image, and only browsing for the file (don’t type in the text box).
  • Generating a catalog file for Windows 10 still fails, but that is really not MDT’s fault, it’s a known bug in the Windows 10 ADK Technical Preview.
    • Workaround: None, wait for a fix.
  • New Offline Media fails if the target folder does not exist.
    • Workaround: Create the target folder first, and make very sure Not to use a subfolder inside your deployment share. Create a folder outside of the deployment share.
  • Deployment fails if a virtual machine has multiple virtual disks
    • Workaround: Attach the extra virtual disks after deployment has completed.
  • Deployment fails if using a “fixed media” USB stick.
    • Workaround: Use an older and most likely slower USB stick instead, that not presents itself as fixed media, but instead as removable media.

Note: There is still much code in MDT 2013 Update 1 preview for XP / Vista / 2003 / 2008 deployments, even though some references was removed in this preview. It doesn’t really do any harm though, but it would be nice to se complete a cleanup.

 

Minor Updates to the Deployment Workbench

Here is a list of the changes I’ve found in the Deployment Workbench:

  • The info in the main node, Deployment Workbench, is updated with the MDT 2013 Update 1 name, but all other info is utterly incorrect. Don’t read it.
  • Getting Started and Component nodes removed (which is great, because the function of getting components was really poor).
  • Windows platform selections for applications are updated with Windows 10 client and server platforms.
  • Install Roles and Features action now contains Windows 10 client and server settings.

image
The Windows 10 settings now available.

 

Updates to the task sequence templates

Here is a list of the changes I’ve found in the task sequence templates:

  • Capture Only Task Sequence: Condition removed on the Apply Windows PE (BCD) action
  • Standard Server Task Sequence: Condition removed on the Apply Windows PE (BCD) action

 

Updates to the Windows Deployment Wizard

Here is a list of the changes I’ve found in the Windows Deployment Wizard:

  • Most (but not all) panes and validation scripts updated with new version number
  • Validation scripts updated to use he new GetMajorMinorVersion function
  • Shortcut key label corrected for the User Credentials pane (credentials_enu.xml)
  • Shortcut key label corrected for the Deployment Summary pane (summary_definition_enu.xml)
  • Shortcut key label corrected for the Welcome pane (welcomewiz_choice.xml)
  • Conditions updated for the BitLocker pane (deploywiz_definition_enu.xml)

 

New Task Sequence engine

The standalone task sequence engine used by MDT 2013 Lite Touch has been upgraded to 5.0.7958.1000 which is the same as the ConfigMgr 2012 R2 (no CU’s) is using. This is major upgrade since the previous version used was 4.0.6487.2000 which is from ConfigMgr 2007 SP2. Because of the new version you will in addition to the updates files also see some additional files (CommonUtils.dll, ccmgencert.dll, msvcp100.dll and msvcr100.dll) being copied to the boot image.

image
One of the task sequence components.

Split WIM support for UEFI media scenarios

When creating (updating) an offline media item, and MDT 2013 Update 1 Preview detects a WIM file larger than 4 GB, it will split it automatically for you into 4 GB chunks (well, 4095 MB chunks).

Findings: The really interesting part, which I consider kind of a design flaw, is that the media update action first of all splits the big WIM every single time you run the update, no matter if the big image changed or not. Second, it’s using ImageX.exe to do the split which is supposed to be deprecated (DISM does support split too). Third, it’s using a quite resource intensive workflow for splitting the WIM and update the media. MDT does the following when having the deployment share on a data disk:

  1. Splits the big WIM using ImageX and stores the SWM chunk files in the original big WIM folder in the MDT deployment share.
  2. Moves the big WIM from the MDT deployment share to %temp%. However it’s  really a copy and delete since %temp% is on a different volume by default.
  3. Copies the SWM files from the deployment share to the media folder. Yes, copies, even if they are on the same volume, not moving.
  4. Moves the big image from %temp% to the MDT deployment share. Again really a copy and delete since %temp% is on a different volume by default.
  5. Deletes the SWM files in the MDT deployment share
  6. Done.

Put it this way, you better have plenty of free disk space, and don’t deploy the image over the network while updating the media (and the opposite around as well).

Real World Note: Since ImageX (or DISM for that matter) is used to split the big WIM file it won’t work if your WIM has files larger than 4 GB in it. Below you see one of the chunks being bigger than 4 GB, which obviously won’t work on a UEFI-based media (which is FAT32). Hopefully most images don’t have individual files larger than 4 GB in them, but still, it’s a serious limitation.

image
The new split WIM support not working for UEFI-based media because the big WIM had one file larger than 4 GB in it.

image
The Update Media Content wizard detecting a large WIM file and splitting it.

 

Script Updates

If you review the MDT 2013 Update 1 preview scripts , you’ll find that most script updates are related to using the new GetMajorMinorVersion from the ZTIUtility.vbs script to handle versioning of Windows Operating Systems, or for supporting the new task sequence engine, or for the split WIM support. But I did notice another change as well:

  • ZTIWindowsUpdate.wsf updated to only enable debug tracing when debug flag is set.

 

Happy Deployment,

/ Johan


More ...

Installing ConfigMgr 2012 R2 CU4 Unattended

$
0
0

When setting up ConfigMgr 2012 R2 in a lab and test, or any type of Proof-Of-Concept you want to automate everything. Luckily the Cumulative Update (CU) 4 download has support for unattended setup: Just add the /Unattended switch to the extracted download and you’re good.

Note: Don’t use the /unattended switch in a production environment without having a SQL Backup of the Site Server. The unattended setup will update the site server database by default.

 

The command

Installing CU4 unattended is a simple as this:

CM12-R2CU4-KB3026739-X64-ENU.exe /Unattended

Note: The /Unattended switch cause the CU4 setup to do almost everything the manual setup does, keep on reading for more info…

 

Verifying the setup

After setup you can review the log files in C:\Windows\Temp, but you can also check the CU Level installed by running this command:

Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\SMS\Setup -Name "CULevel"

image
Displaying the CU level installed.

 

You can also verify that the ConfigMgr console was updated by running this command (should return 5.0.7958.1501 which is the CU4 version):

(Get-Item ($env:SMS_ADMIN_UI_PATH.Substring(0,$env:SMS_ADMIN_UI_PATH.Length – 5) + '\Microsoft.ConfigurationManagement.exe')).VersionInfo.FileVersion

image
Checking the ConfigMgr console version.

 

 

The difference from manual setup

As mentioned, the /Unattended switch cause the CU4 setup to do almost everything the manual setup does. Well, except from creating the four update packages for secondary site servers, consoles and x86/x64 clients.

Luckily, creating four packages and four programs in PowerShell is not that hard :)

$SiteServer = $Env:COMPUTERNAME

# Import the ConfigMgr PowerShell module
Import-Module $env:SMS_ADMIN_UI_PATH.Replace("\bin\i386","\bin\configurationmanager.psd1")
$SiteCode = Get-PSDrive -PSProvider CMSITE
Set-Location "$($SiteCode.Name):\"

# Create the Configuration Manager Updates folder
New-Item "$($SiteCode):\Package\Configuration Manager Updates"

# Create the console update package
$ConsolePackage = New-CMPackage -Name "R2 CU4 - console update - $SiteCode" -Description "R2 CU4 - console update - $SiteCode" -Path "\\$SiteServer\SMS_$SiteCode\hotfix\KB3026739\AdminConsole\i386" 
Move-CMObject -FolderPath "$($SiteCode):\Package\Configuration Manager Updates" -InputObject $ConsolePackage
New-CMProgram -PackageName $ConsolePackage.Name -StandardProgramName "Cumulative update 4 - console update install" -CommandLine "msiexec.exe /p configmgr2012adminui-r2-kb3026739-i386.msp /L*v %TEMP%\configmgr2012adminui-r2-kb3026739-i386.msp.LOG /q REBOOT=ReallySuppress REINSTALL=ALL REINSTALLMODE=mous" -ProgramRunType WhetherOrNotUserIsLoggedOn -RunMode RunWithAdministrativeRights -UserInteraction $false 

# Create the server update package
$ServerPackage = New-CMPackage -Name "R2 CU4 - server update - $SiteCode" -Description "R2 CU4 - server update - $SiteCode" -Path "\\$SiteServer\SMS_$SiteCode\hotfix\KB3026739\Server\x64" 
Move-CMObject -FolderPath "$($SiteCode):\Package\Configuration Manager Updates" -InputObject $ServerPackage
New-CMProgram -PackageName $ServerPackage.Name -StandardProgramName "Cumulative update 4 - server update install" -CommandLine "CM12-R2CU4-KB3026739-X64-ENU.exe /Unattended" -ProgramRunType WhetherOrNotUserIsLoggedOn -RunMode RunWithAdministrativeRights -UserInteraction $false

# Create the x64 client package
$x64ClientPackage = New-CMPackage -Name "R2 CU4 - x64 client update - $SiteCode" -Description "R2 CU4 - x64 client update - $SiteCode" -Path "\\$SiteServer\SMS_$SiteCode\hotfix\KB3026739\Client\x64" 
Move-CMObject -FolderPath "$($SiteCode):\Package\Configuration Manager Updates" -InputObject $x64ClientPackage
New-CMProgram -PackageName $x64ClientPackage.Name -StandardProgramName "Cumulative update 4 - x64 client update install" -CommandLine "msiexec.exe /p configmgr2012ac-r2-kb3026739-x64.msp /L*v %TEMP%\configmgr2012ac-r2-kb3026739-x64.msp.LOG /q REINSTALL=ALL REINSTALLMODE=mous" -ProgramRunType WhetherOrNotUserIsLoggedOn -RunMode RunWithAdministrativeRights -UserInteraction $false

# Create the x86 client package
$x86ClientPackage = New-CMPackage -Name "R2 CU4 - x86 client update - $SiteCode" -Description "R2 CU4 - x86 client update - $SiteCode" -Path "\\$SiteServer\SMS_$SiteCode\hotfix\KB3026739\Client\x86" 
Move-CMObject -FolderPath "$($SiteCode):\Package\Configuration Manager Updates" -InputObject $x86ClientPackage
New-CMProgram -PackageName $x86ClientPackage.Name -StandardProgramName "Cumulative update 4 - x86 client update install" -CommandLine "msiexec.exe /p configmgr2012ac-r2-kb3026739-i386.msp /L*v %TEMP%\configmgr2012ac-r2-kb3026739-i386.msp.LOG /q REINSTALL=ALL REINSTALLMODE=mous" -ProgramRunType WhetherOrNotUserIsLoggedOn -RunMode RunWithAdministrativeRights -UserInteraction $false

 

 

image
The four packages created using PowerShell.


More ...

10 Cool Facts from Podcast about how Microsoft is using SCCM internally

$
0
0

Don’t miss the great podcast about how Microsoft is using SCCM internally, with Brad Andersson and Kelly Pranghofer.

ITC Podcast: How we use SCCM at Microsoft, Part 1

Top10

 

10 cool facts

Fun fact #1: Microsoft is using one global SCCM hierarchy, one CAS, five primary sites, to manage about 300.000 PCs.

Fun fact #2: Microsoft is using a separate SCCM hierarchy (and team) for managing servers.

Fun fact #3: Microsoft are currently running ConfigMgr 2012 SP2 internally Kelly says. Interesting… :)

Fun fact #4: 70 percent of the PCs at Microsoft are running Windows 8.1.

Fun fact #5: About 13-14 percent are Microsoft folks using a Windows Server OS a desktop on their machines, cool :)

Fun fact #6: 35.000 machines are running #Windows10 at Microsoft (and growing).

Fun fact #7: At patch Tuesday, Microsoft internal goal is to have 98 percent of the machines patched within 7 days

Fun fact #8: Microsoft don't use many secondary sites anymore internally, only 12 or 13.

Fun fact #9: Microsoft are using 300 - 350 throttled DPs used instead of secondary sites (globally).

Fun fact #10: A few weeks before new updates are available publicly, Microsoft uses SCCM to deploy them to about 10k - 15k machines internally.


More ...

Running the Data DeDuplication process in PowerShell

$
0
0

Earlier today I was doing a presentation at the TechConnect in Cyprus, and I got a tweet from one in the audience about the script I was using for running the data deduplication processes on my machine. So here it is:

Start-DedupJob -Type Optimization -Memory 75 -Priority High -Volume D:,F: -Wait
Start-DedupJob -Type GarbageCollection -Full -Memory 75 -Priority High -Volume D:,F: -Wait
Start-DedupJob -Type Scrubbing -Full -Memory 75 -Priority High -Volume D:,F: -Wait

 

Happy Deployment, Johan


More ...

Slides and links from TechConnect 2015 in Cyprus

$
0
0

Here are the slides and links from TechConnect 2015 in Cyprus. Big thanks to Microsoft and COMPUTRAIN for arranging this great event!

I was presenting the following four sessions:

  • ITPRO01 - Windows 10 for the IT Pro - Deep Dive
  • ITPRO05 - Implementing Software Updates in the Enterprise
  • ITPRO11 - Deploying Windows 10 in the Enterprise
  • ITPRO13 - Windows Server v.Next Automation - PowerShell is King!

The Team

DreamTeam
The awesome speakers at TechConnect 2015 in Cyprus.

 

 

Slides

Download the slides from all four sessions here: SlidesTechConnect2015Cyprus.zip

 

 

Links

Hydration Kit for System Center 2012 R2 i
http://www.deploymentresearch.comhttp://www.deploymentresearch.com/Research/tabid/62/EntryId/149/The-Hydration-Kit-for-System-Center-2012-R2-is-available-for-download.aspx

TechNet Docs - Create a Windows 8.1 Reference Image
http://technet.microsoft.com/en-us/library/dn744290.aspx

TechNet Docs - Deploy a Windows 8.1 Image Using MDT 2013
http://technet.microsoft.com/en-us/library/dn744279.aspx

TechNet Virtual Labs - Creating a Windows 8.1 reference image
http://go.microsoft.com/?linkid=9845755

Building reference images like a boss!
http://www.deploymentresearch.comhttp://www.deploymentresearch.com/Research/tabid/62/EntryId/174/Building-reference-images-like-a-boss.aspx

 

Happy Deployment, Johan


More ...

Viewing all 168 articles
Browse latest View live