Integriertes Windows 7 SP1 Convenience Rollup mit MDT installieren

In der Kurzmitteilung Windows 7 SP1 Convenience Rollup integrieren habe ich am Server MDT01 den Ordner D:\W7SP1CU\W7SP1 erstellt, der das Windows 7 SP1 Convenience Update und IE11 enthält. Ist natürlich prä­de­s­ti­niert um mit MDT das Golden Image auf Basis dieses Ordners zu erstellen. Voraussetzung sind die Teile 7ff – 11ff der Reihe „Ein einfaches Netzwerk“ und die oben genannte Kurzmitteilung.

Integriertes Windows 7 SP1 Convenience Rollup in MDT importieren

  1. Als Administrator an MDT01 anmelden
  2. Deployment Workbench starten
  3. Deployment Shares\OSD Build Share erweitern
  4. Operating Systems rechts anklicken > Import Operating System
  5. Import Operating System Wizard
    1. OS Type
      1. Full set of source files > Next
    2. Source
      1. Source directory: D:\W7SP1CU\W7SP1 > Next
    3. Destination
      1. Destination directory name: Windows 7 Enterprise x64 CU > Next
    4. Summary > Next
    5. Confirmation > Finish
  6. Das importierte OS nach Windows 7 Enterprise x64 CU umbenennen

Packages entfernen

Die Packages, also die Windows 7 Updates, können jetzt alle vom OSD Build Share entfernt werden.

  1. Deployment Shares\OSD Build Share\Packages\Windows 7 x64 erweitern
  2. Im Detailbereich alle Updates markieren, rechts anklicken > Delete
  3. Delete Selected Items
  4. Completely delete these items,… aktivieren > Next
  5. Finish

Task Sequence anpassen

  1. Deployment Shares\OSD Build Share\erweitern
  2. Build and capture Windows 7 Enterprise x64 rechts anklicken > Properties
  3. Auf den Reiter Task Sequence wechseln
  4. Die Phase Install erweitern
  5. Den Schritt Install Operating System anklicken
    1. Operating Systems to install > Browse…
    2. Select an item
      1. Windows 7 Enterprise x64 CU > OK
    3. Apply
  6. Die Phase State Restore\Standard Software erweitern
  7. Den Schritt INSTALL – Microsoft Internet Explorer 11 markieren und mit Remove entfernen
  8. Ganz nach unten scrollen und vor der Phase Imaging einen zusätzlichen Neustart hinzufügen
  9. Fenster mit OK schließen

Image mit dem integrierten Windows 7 SP1 Convenience Rollup erstellen

Für die Erstellung des Windows 7-Images verwende ich eine einfache Generation 1 virtuelle Maschine auf meinem Hyper-V-Server (siehe Virtuelle Rechner erstellen und Windows 10-Image mit MDT erstellen).

  1. Mit der virtuellen Maschine Capture Windows verbinden
  2. Die ISO-Datei OSDBuildPE_x64.iso laden und den Rechner starten
  3. Deployment Wizard folgen
    1. Computername: W7X64-002
  4. Nach der Installation von Windows sind 19 Updates und IE11 bereits installiert
  5. Nach den Windows Update-Schritten waren es 72 installierte Windows-Updates
  6. Das Image wird aufgezeichnet

Vielen Dank für’s Lesen!

Veröffentlicht unter Kurzmitteilung, MDT, Windows 7 | Verschlagwortet mit , | Hinterlasse einen Kommentar

Bootfähigen USB-Stick mit PowerShell erstellen

Wie in der Kurzmitteilung Windows 7 SP1 Convenience Rollup integrieren angekündigt, werde ich im Folgenden einen bootfähigen USB-Stick mit PowerShell erstellen. Teile des Scripts habe ich von hier: New-BootableUSB. Damit funktionieren nur ISO-Dateien als Quelle. Ich habe das Script von Anfang an neu geschrieben, Windows-Installationsdateien in einem Ordner hinzugefügt und den Kopiervorgang anders gemacht.

Function New-BootableUSBDevice {

    <# .SYNOPSIS
           Zum Erstellen eines startfähigen USB-Sticks.
       .DESCRIPTION
           Diese Funktion erstellt aus einer ISO-Datei oder eines Ordners einen startfähigen USB-Stick.
       .PARAMETER 
           ImagePath
           Pfad zu den Windows-Installationsdateien oder zur ISO-Datei.
       .PARAMETER
           USBDriveLetter
           Laufwerksbuchstabe des USB-Sticks.
       .PARAMETER
           FileSystemType
           Dateisystem für den USB-Stick. Standardeinstellung ist FAT32.
       .EXAMPLE
           New-BootableUSB -ImagePath "C:\Daten\SW_DVD5_WIN_ENT_10_1607_64BIT_German_MLF_X21-07112.ISO" -USBDriveLetter "D" -FileSystemType FAT32
           Erstellt von der angegebenen ISO-Datei einen mit FAT32 formatierten, bootfähigen USB-Stick.
       .NOTES
           Erstellt von Dietmar Haimann, Januar 2017
       .LINK
           https://www.einfaches-netzwerk.at/ #>

    [CmdletBinding()]

    param (
        [Parameter(Mandatory=$True)]
        [ValidateScript({ If (Test-Path $_ -Include *.iso) {$true} Else {Test-Path $_ -PathType Container} })]
        [string]$ImagePath,

        [Parameter(Mandatory=$True)] 
        [ValidateLength(1,1)] 
        [String]$USBDriveLetter,

        [Parameter(Mandatory=$True)]
        [ValidateSet("FAT32","NTFS")]
        [String]$FileSystemType = "FAT32"
    )

    Begin {
        $USBDriveLetter  = $USBDriveLetter.ToUpper()

        If (!((Get-Volume | Where DriveType -eq Removable | Select -ExpandProperty DriveLetter) -contains $USBDriveLetter)) { 
            Write-Host ('{0} ist kein USB-Device.' -f $USBDriveLetter) -ForegroundColor Red 
            Break
        }
        Else {
            Write-Host ('{0} ist ein USB-Device.' -f $USBDriveLetter) -ForegroundColor Green
        }#If
        
        If (!(Test-Path $ImagePath)) {
            Write-Host ('Auf {0} kann nicht zugegriffen werden.' -f $ImagePath) -ForegroundColor Red
            Break
        }
        Else {
            Write-Host ('Auf {0} kann zugegriffen werden.' -f $ImagePath) -ForegroundColor Green
        }#If

        If (Test-Path $ImagePath -Include "*.iso") {
            $IsISO = $true
            Write-Host ('{0} ist eine ISO-Datei.' -f $ImagePath) -ForegroundColor Green
        }
        Else {
            $IsISO = $false
            Write-Host ('{0} ist ein Windows-Ordner.' -f $ImagePath) -ForegroundColor Green
            If (!($ImagePath.EndsWith('\'))) {
                $Source = $ImagePath + "\*"
            }
            Else {
                $Source = $ImagePath + "*"
            }#If
        }#If

    }#Begin

    Process {
        Try {
            $Backup = $ErrorActionPreference
            $ErrorActionPreference = 'Stop'
            
            $Disk = Get-Disk | Where-Object BusType -EQ "USB"
            $Disk | Clear-Disk -RemoveData -Confirm:$false
            $Disk | New-Partition -UseMaximumSize -IsActive -DriveLetter $USBDriveLetter
            Format-Volume -DriveLetter $USBDriveLetter -FileSystem $FileSystemType -Confirm:$false -Force
        }#Try

        Catch {
            Write-Host "Error: $_" -ForegroundColor Red
            Write-Host "Das Script wird abgebrochen." -ForegroundColor Red
            Break
        }#Catch
        
        Finally {
            $ErrorActionPreference = $Backup
        }#Finally
        
        If ($IsISO) {
            If (!(Get-DiskImage -ImagePath $ImagePath | Get-Volume)) {
                $DiskMounted = $false 
                Try {
                    $Backup = $ErrorActionPreference
                    $ErrorActionPreference = 'Stop' 
              
                    Mount-DiskImage -ImagePath $ImagePath
                    $DiskMounted = $true
                    Write-Host ('Das Image {0} konnte geladen werden.' -f $ImagePath) -ForegroundColor Green
                }#Try 
            
                Catch { 
                    Write-Host "Error: $_" -ForegroundColor Red
                    Write-Host "Das Script wird abgebrochen." -ForegroundColor Red
                    Break                
                }#Catch

                Finally {
                    $ErrorActionPreference = $Backup
                }#Finally             
            }
            Else { 
                Write-Host ('Das Image {0} ist bereits geladen.' -f $ImagePath) -ForegroundColor Green
            }#If
            $Source = ((Get-DiskImage -ImagePath $ImagePath | Get-Volume).DriveLetter) + ":\*"
        }#If
                 
        $USBDestination = $USBDriveLetter + ":\" 

        Try {
            $Backup = $ErrorActionPreference
            $ErrorActionPreference = 'Stop' 
            
            Write-Host ('Dateien werden von {0} nach {1} kopiert. USB-Stick nicht vom Computer trennen!'-f $Source, $USBDestination) -ForegroundColor Yellow
            Copy-Item -Path $Source -Destination $USBDestination -Recurse -Force
            }#Try
             
        Catch { 
            Write-Host "Error: $_" -ForegroundColor Red
            Write-Host "Das Script wird abgebrochen." -ForegroundColor Red
            Break                
        }#Catch

        Finally {
            $ErrorActionPreference = $Backup
        }#Finally    
    }#Process

    End {
        If($DiskMounted) { 
            Dismount-DiskImage -ImagePath $ImagePath
        }#If

        Write-Host ('Erstellung des bootfähigen USB-Sticks abgeschlossen!') -ForegroundColor Green    
    }#End
}#Function

Das Script unterstützt ISO-Datenträger und Windows-Installationsdateien in einem Ordner, wie es bei oben genanntem Beitrag der Fall ist.

PowerShell-Script als Modul speichern

Wer öfters Windows von einem USB-Stick starten muss, kann das Powershell-Script als Modul abspeichern und in den PowerShell-Ordner kopieren. Danach steht die Funktion sofort zur Verfügung. Wichtig ist, dass der Ordner und die Datei den gleichen Namen haben.

  1. Windows PowerShell ISE starten
  2. Das Script kopieren und in Windows PowerShell ISE einfügen
  3. File > Save As…
  4. Save As
    1. Zum Pfad C:\Program Files\WindowsPowerShell\Modules\ navigieren
    2. Dort den Ornder New-BootableUSBDevice erstellen und hinein navigieren
    3. File name: New-BootableUSBDevice
    4. Save as type: PowerShell Script Modules (*.psm1) > Save
  5. Windows PowerShell ISE schließen

Einen bootfähigen USB-Stick mit PowerShell erstellen

Als nächstes werde ich die Windows-Installationsdateien vom Beitrag Windows 7 SP1 Convenience Rollup integrieren vom USB-Stick startbar machen.

  1. PowerShell als Administator starten
  2. Mit folgendem Befehl die Funktion New-BootableUSBDevice ausführen
    New-BootableUSBDevice -ImagePath C:\W7SP1 -USBDriveLetter E -FileSystemType FAT32

  3. Der Vorgang dauert nur kurz, je nach Schreibleistung des USB-Sticks

Die manuelle Variante

Die wesentlichen Befehle lassen sich auf fünf Zeilen komprimieren, welche man schnell auswendig eintippen kann. Schritt für Schritt:

  1. USB-Stick anstecken
  2. Optional: ISO-Datei einbinden
  3. PowerShell als Administrator starten
  4. Mit folgendem Befehl die Informationen zum USB-Stick in der Variable $Disk speichern
    $Disk = Get-Disk | Where-Object BusType -EQ "USB"

  5. Mit folgendem Befehl den USB-Stick löschen
    $Disk | Clear-Disk -RemoveData -Confirm:$false
  6. Mit folgendem Befehl eine Partition erstellen
    $Disk | New-Partition -UseMaximumSize -IsActive -DriveLetter E

  7. Mit folgendem Befehl den USB-Stick formatieren
    Format-Volume -DriveLetter E -FileSystem FAT32 -Confirm:$false -Force

  8. Und zum Schluss die Dateien kopieren
    Copy-Item -Path C:\W7SP1\* -Destination E:\ -Recurse -Force

Funktioniert genauso einfach, wenn man es nicht oft braucht.

Vielen Dank für’s Lesen!

Veröffentlicht unter Allgemein, Kurzmitteilung, PowerShell, Windows 7 | Verschlagwortet mit | Hinterlasse einen Kommentar

Windows 7 SP1 Convenience Rollup integrieren

Das Erscheinen des Beitrags Aktuelles Windows 7 SP1-Installationsmedium erstellen auf  Borns IT- und Windows-Blog hat mir in Erinnerung gerufen, dass ich für dieses Thema schon lange einen eigenen Artikel vorbereitet habe. Ich möchte nicht nur das Windows 7 SP1 Convenience Rollup integrieren, sondern auch gleich den IE11. Als Grundlage verwende ich folgende Artikel:

Ordnerstruktur erstellen

  1. Als Administrator an MDT01 anmelden
  2. Folgende Ordnerstruktur erstellen:
    1. D:\W7SP1CU\
      1. D:\W7SP1CU\ConvenienceUpdate
      2. D:\W7SP1CU\IE11
      3. D:\W7SP1CU\IE11Pre
      4. D:\W7SP1CU\Mount
      5. D:\W7SP1CU\RollupUpdates
      6. D:\W7SP1CU\W7SP1
  3. Folgende Dateien herunterladen und nach D:\W7SP1CU\ kopieren:
    1. April 2015 servicing stack update for Windows 7
    2. Convenience rollup update for Windows 7 SP1
    3. July 2016 update rollup for Windows 7 SP1
    4. September 2016 Servicing stack update for Windows 7 SP1
    5. August 2016 update rollup for Windows 7 SP1
    6. Prerequisite updates for Internet Explorer 11
      1. https://www.catalog.update.microsoft.com/Search.aspx?q=2639308
      2. https://www.catalog.update.microsoft.com/Search.aspx?q=2533623
      3. https://www.catalog.update.microsoft.com/Search.aspx?q=2670838
      4. https://www.catalog.update.microsoft.com/Search.aspx?q=2729094
      5. https://www.catalog.update.microsoft.com/Search.aspx?q=2731771
      6. https://www.catalog.update.microsoft.com/Search.aspx?q=2786081
      7. https://www.catalog.update.microsoft.com/Search.aspx?q=2834140
      8. https://www.catalog.update.microsoft.com/Search.aspx?q=2882822
      9. https://www.catalog.update.microsoft.com/Search.aspx?q=2888049

Windows 7 SP1 x64 kopieren

  1. Windows 7 SP1 x64.ISO-Datei mounten oder Windows 7 SP1 x64-DVD einlegen
  2. Command Prompt (Admin) starten
  3. Mit folgendem Befehl die Dateien kopieren:

Convenience Update extrahieren

In den Ordner D:\W7SP1CU\ConvenienceUpdate extrahiere ich das April 2015 servicing stack update for Windows 7, welches den Windows Update Agent aktualisiert und das Convenience rollup update for Windows 7 SP1 selbst.

  1. Mit folgenden Befehlen ins Verzeichnis D:\W7SP1CU\ wechseln und das April 2015 servicing stack update for Windows 7 nach D:\W7SP1CU\ConvenienceUpdate extrahieren:
    cd /D D:\W7SP1CU
    expand Windows6.1-KB3020369-x64.msu -f:Windows*.cab D:\W7SP1CU\ConvenienceUpdate
  2. Mit folgendem Befehl das Convenience rollup update for Windows 7 SP1 nach D:\W7SP1CU\ConvenienceUpdate extrahieren:
    expand Windows6.1-KB3125574-v4-x64.msu -f:Windows*.cab D:\W7SP1CU\ConvenienceUpdate


Internet Explorer 11 core installation package und prerequisite packages extrahieren

  1. Mit folgendem Befehl das Internet Explorer 11 core installation package nach D:\W7SP1CU\IE11 extrahieren
    IE11-Windows6.1-x64-de-de.exe /x:"D:\W7SP1CU\IE11"
  2. Mit folgenden Befehlen die Internet Explorer 11 spelling dictionaries extrahieren
    expand IE11\IE-Spelling-de-DE.MSU -f:Windows*.cab D:\W7SP1CU\IE11
    expand IE11\IE-Hyphenation-de-DE.MSU -f:Windows*.cab D:\W7SP1CU\IE11


    Hinweis: Aus diesem Ordner werden die Dateien IE-Win7.cab, ielangpack-de-DE.cab, Windows6.3-KB2849696-x86.cab und Windows6.3-KB2849697-x86.cab verwendet. Der Rest kann gelöscht werden, muss aber nicht.

  3. Mit folgenden Befehlen die Internet Explorer 11 prerequisite packages extrahieren
    expand Windows6.1-KB2533623-x64.msu -f:Windows*.cab D:\W7SP1CU\IE11Pre
    expand Windows6.1-KB2639308-x64.msu -f:Windows*.cab D:\W7SP1CU\IE11Pre
    expand Windows6.1-KB2670838-x64.msu -f:Windows*.cab D:\W7SP1CU\IE11Pre
    expand Windows6.1-KB2729094-v2-x64.msu -f:Windows*.cab D:\W7SP1CU\IE11Pre
    expand Windows6.1-KB2731771-x64.msu -f:Windows*.cab D:\W7SP1CU\IE11Pre
    expand Windows6.1-KB2786081-x64.msu -f:Windows*.cab D:\W7SP1CU\IE11Pre
    expand Windows6.1-KB2834140-v2-x64.msu -f:Windows*.cab D:\W7SP1CU\IE11Pre
    expand Windows6.1-KB2882822-x64.msu -f:Windows*.cab D:\W7SP1CU\IE11Pre
    expand Windows6.1-KB2888049-x64.msu -f:Windows*.cab D:\W7SP1CU\IE11Pre

Rollup Updates extrahieren

  1. Mit folgenden Befehlen die restlichen Rollup Updates extrahieren
    expand Windows6.1-KB3172605-x64.msu -f:Windows*.cab D:\W7SP1CU\RollupUpdates
    expand Windows6.1-KB3177467-x64.msu -f:Windows*.cab D:\W7SP1CU\RollupUpdates
    expand Windows6.1-KB3179573-x64.msu -f:Windows*.cab D:\W7SP1CU\RollupUpdates
    

Das Convenience Update mit IE11 integrieren

  1. Mit folgendem Befehl Windows 7 SP1 x64 mounten
    dism /Mount-Wim /Wimfile:"D:\W7SP1CU\W7SP1\sources\install.wim /index:1 /Mountdir:"D:\W7SP1CU\Mount"

  2. Mit folgendem Befehl die vorhanden Packages im Image überprüfen
    dism /Image:"D:\W7SP1CU\Mount" /Get-Packages


    Hinweis: Weil bereits Packages mit dem Status Install Pending vorhanden sind, kann ich den dism-Parameter /PreventPending nicht verwenden.

  3. Mit den folgenden Befehlen alle Updates integrieren
    1. April 2015 servicing stack update for Windows 7
      dism /Image:"D:\W7SP1CU\Mount" /Add-Package /PackagePath:"D:\W7SP1CU\ConvenienceUpdate\Windows6.1-KB3020369-x64.cab"
    2. Convenience rollup update for Windows 7 SP1
      dism /Image:"D:\W7SP1CU\Mount" /Add-Package /PackagePath:"D:\W7SP1CU\ConvenienceUpdate\Windows6.1-KB3125574-v4-x64.cab"
    3. Internet Explorer 11 prerequisite packages
      dism /Image:"D:\W7SP1CU\Mount" /Add-Package /PackagePath:"D:\W7SP1CU\IE11Pre"
    4. Internet Explorer 11 core installation package
      dism /Image:"D:\W7SP1CU\Mount" /Add-Package /PackagePath:"D:\W7SP1CU\IE11\IE-Win7.CAB"
    5. Internet Explorer 11 langpack and spelling dictionaries
      dism /Image:"D:\W7SP1CU\Mount" /Add-Package /PackagePath:"D:\W7SP1CU\IE11\ielangpack-de-DE.CAB"
      dism /Image:"D:\W7SP1CU\Mount" /Add-Package /PackagePath:"D:\W7SP1CU\IE11\Windows6.3-KB2849696-x86.cab"
      dism /Image:"D:\W7SP1CU\Mount" /Add-Package /PackagePath:"D:\W7SP1CU\IE11\Windows6.3-KB2849697-x86.cab"
    6. Rollup Updates (auf die Reihenfolge achten!)
      dism /Image:"D:\W7SP1CU\Mount" /Add-Package /PackagePath:"D:\W7SP1CU\RollupUpdates\Windows6.1-KB3172605-x64.cab"
      dism /Image:"D:\W7SP1CU\Mount" /Add-Package /PackagePath:"D:\W7SP1CU\RollupUpdates\Windows6.1-KB3179573-x64.cab"
      dism /Image:"D:\W7SP1CU\Mount" /Add-Package /PackagePath:"D:\W7SP1CU\RollupUpdates\Windows6.1-KB3177467-x64.cab"
  4. Mit folgendem Befehl das Image speichern
    dism /unmount-wim /mountdir:"D:\W7SP1CU\Mount" /commit

Fertig ist das Windows 7 SP1 x64 Convenience Update-Image mit IE11. Einen startfähigen USB-Stick für die Installation und die Verwendung mit MDT erkläre ich in den nächsten Artikeln.

Vielen Dank für’s Lesen!

Veröffentlicht unter Kurzmitteilung, Windows 7 | Verschlagwortet mit , | 2 Kommentare