Archive for the ‘DISM’ Category

Kaputte oder hängende Windows Updates Offline unter WinPE oder WinRE mittels DISM deinstallieren

20 September 2018

Ab und an gibt es Probleme mit Updates von Windows, welche dazu führen, dass mit dem betreffenden Rechner nichts mehr anzufangen ist. Er fährt einfach nicht mehr hoch und die üblichen Mechanismen zur Reparatur funktionieren nicht. Der normale Weg ist dann eine komplette Neuinstallation. Solange man einen Hardwaredefekt ausschließen kann muss dies nicht immer sein. Man muss nur irgendwie Zugriff auf die Festplatte des nicht funktionierenden Systems bekommen. Am einfachsten geht es mittels WinPE oder WinRE.

Nun verwendet man DISM.EXE um mit Images zu arbeiten, allerdings muss man immer mittels Parameter sagen, um welches Images es sich handelt. Images bezieht sich in diesem Zusammenhang auf eine Windowsinstallation. Dazu muss zuerst in Erfahrung gebracht werden, unter welchem Laufwerksbuchstaben das zu betreuende Windows verfügbar ist. Anschließend wird DISM immer mit dem Parameter /image:<LW> aufgerufen, wobei <LW> der Laufwerksbuchstabe des zu bearbeitenden Windows ist.

Zum Auflisten der installierten Updates verwendet man:

DISM /Image:C: /Get-Packages


Paketidentität : Package_for_KB4456655~31bf3856ad364e35~amd64~~17134.281.1.1
Status : Installiert
Versionstyp : Update
Installationszeit : 11.09.2018 20:03

Paketidentität : Package_for_KB4457146~31bf3856ad364e35~amd64~~10.0.1.0
Status : Installiert
Versionstyp : Security Update
Installationszeit : 11.09.2018 20:04

Paketidentität : Package_for_RollupFix~31bf3856ad364e35~amd64~~17134.228.1.6
Status : Abgelöst
Versionstyp : Security Update
Installationszeit : 15.08.2018 22:33

Paketidentität : Package_for_RollupFix~31bf3856ad364e35~amd64~~17134.285.1.7
Status : Installiert
Versionstyp : Security Update
Installationszeit : 15.09.2018 03:07

Der Vorgang wurde erfolgreich beendet.

Hat man nun ein Problem mit einem Update dann deinstalliert man dies, indem man die Paketidentität angibt:

DISM /Image:C: /Remove-Package /PackageName:Package_for_RollupFix~31bf3856ad364e35
~amd64~~17134.285.1.7

Am Ende sollte noch aufgeräumt werden:

DISM /Image:C: /CleanUp-Image /RevertPendingActions

Der Parameter RevertPendingActions kann auch in anderen Situationen angewandt werden: https://blogs.technet.microsoft.com/joscon/2009/10/15/getting-out-of-a-no-boot-situation-after-installing-updates-on-windows-7-2008r2/.

Wenn das Entfernen des letzten Updates nicht hilft, könnte das weitere Entfernen von Updates helfen.

Übrigens kann man obige Befehle auch auf eine laufende Instanz von Windows anwenden indem einfach anstatt /Image:C: /Online angibt.

USB-Bootstick von einer Windows-ISO erstellen, MasterbootRecord (MBR)-Variante

6 März 2017

In Bezug zu diesem Artikel https://newyear2006.wordpress.com/2009/09/19/windows-vista-windows-7-usb-boot-stick-erstellen/, hier ein Update um die einzelnen Dinge per Powershell hinzubekommen. Dadurch wird es möglich eine beliebige aktuelle Microsoft ISO-Datei (von Vista bis Server 2016) zu verwenden und deren Inhalt auf einem bootbaren USB-Stick zu erhalten. Damit die unten stehenden Powershellbefehle verfügbar sind, braucht man mindestens Windows 8.1, getestet habe ich es mit Windows 10.

Diese Methode könnte man auch mit leichter Variation verwenden, um eine bootbare VHD oder VHDX für einen Hyper-V zu bekommen. Aber dies vielleicht ein anderes Mal.

Ein weiterer Vorteil bei diesem Weg kann man auch Modifikationen der zu installierenden Dateien vornehmen. So kann man z. B. die EI.CFG bearbeiten, bevor man die eigentliche Installation beginnt. https://newyear2006.wordpress.com/2009/12/13/windows-7-versionsauswahl-bei-installation/. Oder man könnte die Eingabe des Produktschlüssels umgehen: https://newyear2006.wordpress.com/2012/08/30/windows-8-eingabe-des-produktschlssels-bei-der-installation-umgehen/. Noch eine Variante: https://newyear2006.wordpress.com/2013/09/13/windows-8-1-mit-product-key-von-windows-8-installieren/.

Damit die folgenden Befehle auch funktionieren, braucht man eine Powershell-Eingabeaufforderung mit Administratorrechten.

Auswahl des USB-Sticks
Da wir hier gezielt die Daten auf einen USB-Stick schreiben wollen und bei den Aktionen auch mal schnell die falsche Platte gelöscht werden kann, lassen wir uns nur Geräte die als Wechseldatenträger (Removable Storage) auftauchen anzeigen.

$diskObj = Get-Volume | Where DriveType –eq Removable | Get-Partition | Get-Disk | Out-GridView –Title "USB-Stick auswählen" –PassThru

Um auf vom Volume zur Disk zu kommen, muss man den Umweg über die Partition machen. Am Ende sorgt Out-GridView, dass nur ein Stick ausgewählt werden kann.

Wer hier nichts angezeigt bekommt, der hat womöglich einen Stick der als interne Festplatte erkannt wird. Vor allem USB-Sticks die “Windows to Go” geeignet sind, werden so also nicht erkannt. Wer möchte, kann dazu diese Variante wählen:

$diskObj = Get-Disk | Out-GridView –Title "USB-Stick auswählen" –PassThru

Wer auf einem Hyper-V oder Nano-Server arbeitet, der hat Out-GridView nicht zur Verfügung, der kann auch diese Variante verwenden:

Get-Disk | select Number, FriendlyName, @{Name="Total Size"; Expression={"{0:N2} GB" –f ($_.Size/1GB)}}

Es werden alle Laufwerke aufgelistet und man wählt eines aus:

$diskObj = Get-Disk –Number X

Egal welche Methode man gewählt hat, man sollte nun in $diskObj ein Objekt vom Typ MSFT_Disk haben.

USB-Stick löschen und formatieren
Nun geht es ans eingemachte. Für alle, die nicht wissen, was sie tun, hier kann man schnell seine Platte löschen, wenn man oben nicht das richtige Laufwerk ausgewählt hat!

$diskNr = $diskObj.Number

Get-Disk –Number $diskNr | Clear-Disk –RemoveData

muss mit Ja bestätigt werden.

$part=New-Partition –DiskNumber $diskNr –UseMaximumSize –IsActive

$part | Format-Volume –FileSystem NTFS –NewFileSystemLabel "BootDisk"

hier darf kein –Full angegeben werden, dann ist es automatisch eine Quick-Formatierung.

Add-PartitionAccessPath –Disknumber $diskNr –PartitionNumber $part.PartitionNumber –AssignDriveletter

Laufwerksbuchstaben holen:

$drive = (Get-Partition –DiskNumber $diskNr –PartitionNumber $part.PartitionNumber).DriveLetter

ISO-Datei auswählen
So, nun muss das ISO-Image geladen werden, hier wieder komfortabel per Auswahl die ISO-Datei ausgewählt:

$isoFile = Get-Item .\myIsoPath\*.ISO | Out-GridView –Title "ISO auswählen" –PassThru

Möchte man eine ISO-Datei direkt angeben oder liegt die ISO-Datei im aktuellen Pfad, dann kann auch der direkte Weg benutzt werden:

$isoFile = Get-Item (Resolve-Path .\myIsoFile.ISO)

Nun muss die ISO-Datei eingehängt werden und der zugeordnete Laufwerksbuchstabe ermittelt werden. Allerdings gibt es hier mal wieder ein kleines Problem! Die ISO-Datei darf nicht mittels UNC-Pfad angegeben werden bzw. darf nicht auf einem Remotelaufwerk liegen, sonst wird sie nicht richtig eingehängt, bzw. es wird kein Laufwerksbuchstabe zugeordnet. Nachdem ich ewig lang gezweifelt habe, habe ich jemand anderes gefunden, der genau das gleiche Problem entdeckt hat: https://github.com/VirtualEngine/Lability/issues/28#issuecomment-159657191. Kurz gesagt, Get-Volume liefert nicht den Laufwerksbuchstaben der ISO-Datei, allerdings liefern PS-Drive, Win32_Volume den Laufwerksbuchstaben! Mal wieder ein krasser Bug. Also Vorsicht!

$image=Mount-DiskImage –ImagePath $isoFile.Fullname –PassThru
$imageDrive=($image|Get-Volume).DriveLetter

Bootsector schreiben
Damit von dem USB-Stick auch gebootet werden kann, muss natürlich ein Boot-Sektor geschrieben werden.

Start-Process –Wait "$($ImageDrive):\Boot\BootSect.Exe" –ArgumentList "/NT60","$($drive)"

Dateien der ISO auf den Stick kopieren:

xcopy.exe "$($ImageDrive):\*.*" "$($drive):\" /s /h

So nun sollte alles auf dem Stick sein, so dass von diesem gebootet werden kann.

Noch wichtig: Was tun, wenn der Stick beim Bootvorgang nicht auftaucht? Im UEFI BIOS sollte dann die SecureBoot-Einstellung überprüft werden, ob beliebige Betriebssysteme gebootet werden können oder nur SecureBoot-fähige.

Ein späterer Artikel soll die SecureBoot- also UEFI-fähige Variante nachliefern.

Die Sache mit dem Installationsnamen und dem Featurenamen bei DISM bzw. Powershell ServerManager-Modul

28 April 2016

Bereits früher hatte ich auf die Problematik mit den verschiedenen Namen der unterschiedlichen Installationstechniken mit DISM, Install-WindowsFeature usw. hingewiesen: https://newyear2006.wordpress.com/2016/01/25/unterschiede-zwischen-windows-funktionen-bzw-features-bei-der-installation/

Hier nun ein Script welches etwas mehr Licht ins Dunkel bringt und den Featurenamen mit dem Installationsnamen in Verbindung setzt:

Get-WindowsFeature *|% {$n=@()} { $n+= New-Object -TypeName psobject -Property ([ordered]@{Name=$_.Name; InstallName=$_.AdditionalInfo.Item("InstallName")}) }  {$n}

Dadurch erhält man dann schön eine Tabelle, was mit was korrespondiert. Oft ist es so, dass der Name mit dem Installationsnamen zusammenpasst wie bei File-Services. Aber manchmal läuft die Sache komplett auseinander, Beispiel FS-BranchCache dessen Installationsname SMBHashGeneration ist. Da würde man nie drauf kommen, wenn man es nicht wüsste!

In folgender Tabelle sind die Installationsnamen in geschweiften Klammern aufgeführt, weil es mehrere Installationsnamen geben kann, wie z. B. bei WDS-Transport, welcher dann als Installationsnamen Microsoft-Windows-Deployment-Services-Transport-Server und Microsoft-Windows-Deployment-Services umfasst.

Name        : ADLDS
InstallName : {DirectoryServices-ADAM}

Name        : AD-Domain-Services
InstallName : {DirectoryServices-DomainController}

Name        : ADRMS
InstallName : {RightsManagementServices-Role}

Name        : ADRMS-Server
InstallName : {RightsManagementServices, RightsManagementServices-AdminTools}

Name        : ADRMS-Identity
InstallName : {RMS-Federation}

Name        : ADFS-Federation
InstallName : {IdentityServer-SecurityTokenService}

Name        : AD-Certificate
InstallName : {ADCertificateServicesRole}

Name        : ADCS-Cert-Authority
InstallName : {CertificateServices}

Name        : ADCS-Online-Cert
InstallName : {OnlineRevocationServices}

Name        : ADCS-Device-Enrollment
InstallName : {NetworkDeviceEnrollmentServices}

Name        : ADCS-Enroll-Web-Pol
InstallName : {CertificateEnrollmentPolicyServer}

Name        : ADCS-Enroll-Web-Svc
InstallName : {CertificateEnrollmentServer}

Name        : ADCS-Web-Enrollment
InstallName : {WebEnrollmentServices}

Name        : Application-Server
InstallName : {Application-Server}

Name        : AS-NET-Framework
InstallName : {AS-NET-Framework}

Name        : AS-Ent-Services
InstallName : {AS-Ent-Services}

Name        : AS-TCP-Port-Sharing
InstallName : {Application-Server-TCP-Port-Sharing}

Name        : AS-WAS-Support
InstallName : {Application-Server-WAS-Support}

Name        : AS-HTTP-Activation
InstallName : {Application-Server-HTTP-Activation}

Name        : AS-MSMQ-Activation
InstallName : {Application-Server-MSMQ-Activation}

Name        : AS-Named-Pipes
InstallName : {Application-Server-Pipe-Activation}

Name        : AS-TCP-Activation
InstallName : {Application-Server-TCP-Activation}

Name        : AS-Web-Support
InstallName : {Application-Server-WebServer-Support}

Name        : AS-Dist-Transaction
InstallName : {AS-Dist-Transaction}

Name        : AS-WS-Atomic
InstallName : {AS-WS-Atomic}

Name        : AS-Outgoing-Trans
InstallName : {AS-Outgoing-Trans}

Name        : AS-Incoming-Trans
InstallName : {AS-Incoming-Trans}

Name        : FileAndStorage-Services
InstallName : {FileAndStorage-Services}

Name        : File-Services
InstallName : {File-Services}

Name        : FS-FileServer
InstallName : {CoreFileServer}

Name        : FS-SyncShareService
InstallName : {WorkFolders-Server}

Name        : FS-BranchCache
InstallName : {SMBHashGeneration}

Name        : FS-VSS-Agent
InstallName : {FileServerVSSAgent}

Name        : FS-DFS-Namespace
InstallName : {DFSN-Server}

Name        : FS-DFS-Replication
InstallName : {DFSR-Infrastructure-ServerEdition}

Name        : FS-iSCSITarget-Server
InstallName : {iSCSITargetServer}

Name        : iSCSITarget-VSS-VDS
InstallName : {iSCSITargetStorageProviders}

Name        : FS-Resource-Manager
InstallName : {FSRM-Infrastructure}

Name        : FS-NFS-Service
InstallName : {ServicesForNFS-ServerAndClient, ServerForNFS-Infrastructure}

Name        : Storage-Services
InstallName : {Storage-Services}

Name        : DHCP
InstallName : {DHCPServer}

Name        : DNS
InstallName : {DNS-Server-Full-Role}

Name        : Print-Services
InstallName : {Printing-Server-Foundation-Features}

Name        : Print-Server
InstallName : {Printing-Server-Role}

Name        : Print-Internet
InstallName : {Printing-InternetPrinting-Server}

Name        : Print-LPD-Service
InstallName : {Printing-LPDPrintService}

Name        : Print-Scan-Server
InstallName : {BusScan-ScanServer}

Name        : Fax
InstallName : {FaxServiceRole}

Name        : Hyper-V
InstallName : {Microsoft-Hyper-V-Offline, Microsoft-Hyper-V-Online}

Name        : NPAS
InstallName : {NPAS-Role}

Name        : NPAS-Policy-Server
InstallName : {IAS NT Service}

Name        : NPAS-Host-Cred
InstallName : {HCAP-Server}

Name        : NPAS-Health
InstallName : {HCSRuntime}

Name        : Remote-Desktop-Services
InstallName : {Remote-Desktop-Services}

Name        : RDS-Gateway
InstallName : {Gateway}

Name        : RDS-Licensing
InstallName : {Licensing}

Name        : RDS-RD-Server
InstallName : {AppServer}

Name        : RDS-Connection-Broker
InstallName : {SBMgr-UI, SessionDirectory}

Name        : RDS-Web-Access
InstallName : {WebAccess}

Name        : RemoteAccess
InstallName : {RemoteAccess}

Name        : DirectAccess-VPN
InstallName : {RemoteAccessServer}

Name        : Routing
InstallName : {RasRoutingProtocols}

Name        : Web-Application-Proxy
InstallName : {Web-Application-Proxy}

Name        : VolumeActivation
InstallName : {VolumeActivation-Full-Role}

Name        : Web-Server
InstallName : {IIS-WebServerRole}

Name        : Web-WebServer
InstallName : {IIS-WebServer}

Name        : Web-Common-Http
InstallName : {IIS-CommonHttpFeatures}

Name        : Web-Http-Errors
InstallName : {IIS-HttpErrors}

Name        : Web-Default-Doc
InstallName : {IIS-DefaultDocument}

Name        : Web-Static-Content
InstallName : {IIS-StaticContent}

Name        : Web-Dir-Browsing
InstallName : {IIS-DirectoryBrowsing}

Name        : Web-Http-Redirect
InstallName : {IIS-HttpRedirect}

Name        : Web-DAV-Publishing
InstallName : {IIS-WebDAV}

Name        : Web-Performance
InstallName : {IIS-Performance}

Name        : Web-Stat-Compression
InstallName : {IIS-HttpCompressionStatic}

Name        : Web-Dyn-Compression
InstallName : {IIS-HttpCompressionDynamic}

Name        : Web-Security
InstallName : {IIS-Security}

Name        : Web-Filtering
InstallName : {IIS-RequestFiltering}

Name        : Web-Client-Auth
InstallName : {IIS-ClientCertificateMappingAuthentication}

Name        : Web-Cert-Auth
InstallName : {IIS-IISCertificateMappingAuthentication}

Name        : Web-Digest-Auth
InstallName : {IIS-DigestAuthentication}

Name        : Web-IP-Security
InstallName : {IIS-IPSecurity}

Name        : Web-Basic-Auth
InstallName : {IIS-BasicAuthentication}

Name        : Web-CertProvider
InstallName : {IIS-CertProvider}

Name        : Web-Url-Auth
InstallName : {IIS-URLAuthorization}

Name        : Web-Windows-Auth
InstallName : {IIS-WindowsAuthentication}

Name        : Web-Health
InstallName : {IIS-HealthAndDiagnostics}

Name        : Web-Http-Logging
InstallName : {IIS-HttpLogging}

Name        : Web-Http-Tracing
InstallName : {IIS-HttpTracing}

Name        : Web-Request-Monitor
InstallName : {IIS-RequestMonitor}

Name        : Web-Custom-Logging
InstallName : {IIS-CustomLogging}

Name        : Web-ODBC-Logging
InstallName : {IIS-ODBCLogging}

Name        : Web-Log-Libraries
InstallName : {IIS-LoggingLibraries}

Name        : Web-App-Dev
InstallName : {IIS-ApplicationDevelopment}

Name        : Web-Net-Ext
InstallName : {IIS-NetFxExtensibility}

Name        : Web-Net-Ext45
InstallName : {IIS-NetFxExtensibility45}

Name        : Web-AppInit
InstallName : {IIS-ApplicationInit}

Name        : Web-ASP
InstallName : {IIS-ASP}

Name        : Web-Asp-Net
InstallName : {IIS-ASPNET}

Name        : Web-Asp-Net45
InstallName : {IIS-ASPNET45}

Name        : Web-CGI
InstallName : {IIS-CGI}

Name        : Web-ISAPI-Ext
InstallName : {IIS-ISAPIExtensions}

Name        : Web-ISAPI-Filter
InstallName : {IIS-ISAPIFilter}

Name        : Web-Includes
InstallName : {IIS-ServerSideIncludes}

Name        : Web-WebSockets
InstallName : {IIS-WebSockets}

Name        : Web-Ftp-Server
InstallName : {IIS-FTPServer}

Name        : Web-Ftp-Service
InstallName : {IIS-FTPSvc}

Name        : Web-Ftp-Ext
InstallName : {IIS-FTPExtensibility}

Name        : Web-Mgmt-Tools
InstallName : {IIS-WebServerManagementTools}

Name        : Web-Mgmt-Console
InstallName : {IIS-ManagementConsole}

Name        : Web-Scripting-Tools
InstallName : {IIS-ManagementScriptingTools}

Name        : Web-Mgmt-Compat
InstallName : {IIS-IIS6ManagementCompatibility}

Name        : Web-Metabase
InstallName : {IIS-Metabase}

Name        : Web-Lgcy-Scripting
InstallName : {IIS-LegacyScripts}

Name        : Web-Lgcy-Mgmt-Console
InstallName : {IIS-LegacySnapIn}

Name        : Web-WMI
InstallName : {IIS-WMICompatibility}

Name        : Web-Mgmt-Service
InstallName : {IIS-ManagementService}

Name        : ServerEssentialsRole
InstallName : {WSS-Product-Package}

Name        : UpdateServices
InstallName : {UpdateServices}

Name        : UpdateServices-WidDB
InstallName : {UpdateServices-WidDatabase}

Name        : UpdateServices-Services
InstallName : {UpdateServices-Services}

Name        : UpdateServices-DB
InstallName : {UpdateServices-Database}

Name        : WDS
InstallName : {Microsoft-Windows-Deployment-Services}

Name        : WDS-Deployment
InstallName : {Microsoft-Windows-Deployment-Services-Deployment-Server}

Name        : WDS-Transport
InstallName : {Microsoft-Windows-Deployment-Services-Transport-Server, Microsoft-Windows-Deployment-Services}

Name        : NET-Framework-Features
InstallName : {NetFx3ServerFeatures}

Name        : NET-Framework-Core
InstallName : {NetFx3}

Name        : NET-HTTP-Activation
InstallName : {WCF-HTTP-Activation}

Name        : NET-Non-HTTP-Activ
InstallName : {WCF-NonHTTP-Activation}

Name        : NET-Framework-45-Features
InstallName : {NetFx4ServerFeatures}

Name        : NET-Framework-45-Core
InstallName : {NetFx4}

Name        : NET-Framework-45-ASPNET
InstallName : {NetFx4Extended-ASPNET45}

Name        : NET-WCF-Services45
InstallName : {WCF-Services45}

Name        : NET-WCF-Pipe-Activation45
InstallName : {WCF-Pipe-Activation45}

Name        : NET-WCF-HTTP-Activation45
InstallName : {WCF-HTTP-Activation45}

Name        : NET-WCF-MSMQ-Activation45
InstallName : {WCF-MSMQ-Activation45}

Name        : NET-WCF-TCP-Activation45
InstallName : {WCF-TCP-Activation45}

Name        : NET-WCF-TCP-PortSharing45
InstallName : {WCF-TCP-PortSharing45}

Name        : User-Interfaces-Infra
InstallName : {User-Interfaces-Infra}

Name        : Server-Gui-Mgmt-Infra
InstallName : {ServerCore-FullServer, Server-Gui-Mgmt}

Name        : Desktop-Experience
InstallName : {DesktopExperience}

Name        : Server-Gui-Shell
InstallName : {Server-Gui-Shell}

Name        : BitLocker
InstallName : {BitLocker}

Name        : BitLocker-NetworkUnlock
InstallName : {BitLocker-NetworkUnlock}

Name        : BranchCache
InstallName : {PeerDist}

Name        : NFS-Client
InstallName : {ServicesForNFS-ServerAndClient, ClientForNFS-Infrastructure}

Name        : Data-Center-Bridging
InstallName : {DataCenterBridging}

Name        : Direct-Play
InstallName : {DirectPlay}

Name        : Simple-TCPIP
InstallName : {SimpleTCP}

Name        : EnhancedStorage
InstallName : {EnhancedStorage}

Name        : InkAndHandwritingServices
InstallName : {InkAndHandwritingServices}

Name        : GPMC
InstallName : {Microsoft-Windows-GroupPolicy-ServerAdminTools-Update}

Name        : Web-WHC
InstallName : {IIS-HostableWebCore}

Name        : ManagementOdata
InstallName : {ManagementOdata}

Name        : BITS
InstallName : {BITS}

Name        : BITS-IIS-Ext
InstallName : {BITSExtensions-Upload}

Name        : BITS-Compact-Server
InstallName : {LightweightServer}

Name        : Windows-Internal-Database
InstallName : {Windows-Internal-Database}

Name        : Internet-Print-Client
InstallName : {Printing-InternetPrinting-Client}

Name        : IPAM
InstallName : {IPAMServerFeature}

Name        : ISNS
InstallName : {iSNS_Service}

Name        : LPR-Port-Monitor
InstallName : {Printing-LPRPortMonitor}

Name        : Server-Media-Foundation
InstallName : {ServerMediaFoundation}

Name        : MSMQ
InstallName : {MSMQ}

Name        : MSMQ-Services
InstallName : {MSMQ-Services}

Name        : MSMQ-Server
InstallName : {MSMQ-Server}

Name        : MSMQ-HTTP-Support
InstallName : {MSMQ-HTTP}

Name        : MSMQ-Triggers
InstallName : {MSMQ-Triggers}

Name        : MSMQ-Multicasting
InstallName : {MSMQ-Multicast}

Name        : MSMQ-Routing
InstallName : {MSMQ-RoutingServer}

Name        : MSMQ-Directory
InstallName : {MSMQ-ADIntegration}

Name        : MSMQ-DCOM
InstallName : {MSMQ-DCOMProxy}

Name        : Multipath-IO
InstallName : {MultipathIo}

Name        : NLB
InstallName : {NetworkLoadBalancingFullServer}

Name        : PNRP
InstallName : {P2P-PnrpOnly}

Name        : CMAK
InstallName : {RasCMAK}

Name        : RDC
InstallName : {MSRDC-Infrastructure}

Name        : RSAT
InstallName : {ServerManager-Core-RSAT}

Name        : RSAT-Feature-Tools
InstallName : {ServerManager-Core-RSAT-Feature-Tools}

Name        : RSAT-SMTP
InstallName : {Smtpsvc-Admin-Update-Name}

Name        : RSAT-Clustering
InstallName : {FailoverCluster-AdminPak}

Name        : RSAT-Clustering-PowerShell
InstallName : {FailoverCluster-PowerShell}

Name        : RSAT-Clustering-Mgmt
InstallName : {FailoverCluster-Mgmt}

Name        : RSAT-Clustering-CmdInterface
InstallName : {FailoverCluster-CmdInterface}

Name        : RSAT-Clustering-AutomationServer
InstallName : {FailoverCluster-AutomationServer}

Name        : IPAM-Client-Feature
InstallName : {IPAMClientFeature}

Name        : RSAT-SNMP
InstallName : {Server-RSAT-SNMP}

Name        : RSAT-Bits-Server
InstallName : {BITSExtensions-AdminPack}

Name        : RSAT-NLB
InstallName : {NetworkLoadBalancingManagementClient}

Name        : RSAT-Feature-Tools-BitLocker
InstallName : {Bitlocker-Utilities}

Name        : RSAT-Feature-Tools-BitLocker-BdeAducExt
InstallName : {BdeAducExtTool}

Name        : RSAT-Feature-Tools-BitLocker-RemoteAdminTool
InstallName : {BitLocker-RemoteAdminTool}

Name        : RSAT-WINS
InstallName : {WINS-Server-Tools}

Name        : RSAT-Role-Tools
InstallName : {ServerManager-Core-RSAT-Role-Tools}

Name        : RSAT-AD-Tools
InstallName : {RSAT-AD-Tools-Feature}

Name        : RSAT-AD-PowerShell
InstallName : {ActiveDirectory-PowerShell}

Name        : RSAT-ADDS
InstallName : {RSAT-ADDS-Tools-Feature}

Name        : RSAT-AD-AdminCenter
InstallName : {DirectoryServices-AdministrativeCenter}

Name        : RSAT-ADDS-Tools
InstallName : {DirectoryServices-DomainController-Tools}

Name        : RSAT-NIS
InstallName : {RSAT-NIS}

Name        : RSAT-ADLDS
InstallName : {DirectoryServices-ADAM-Tools}

Name        : RSAT-Hyper-V-Tools
InstallName : {RSAT-Hyper-V-Tools-Feature}

Name        : Hyper-V-Tools
InstallName : {Microsoft-Hyper-V-Management-Clients}

Name        : Hyper-V-PowerShell
InstallName : {Microsoft-Hyper-V-Management-PowerShell}

Name        : RSAT-RDS-Tools
InstallName : {RSAT-RDS-Tools-Feature}

Name        : RSAT-RDS-Licensing-Diagnosis-UI
InstallName : {Licensing-Diagnosis-UI}

Name        : RSAT-RDS-Gateway
InstallName : {Gateway-UI}

Name        : RDS-Licensing-UI
InstallName : {Licensing-UI}

Name        : UpdateServices-RSAT
InstallName : {UpdateServices-RSAT}

Name        : UpdateServices-API
InstallName : {UpdateServices-API}

Name        : UpdateServices-UI
InstallName : {UpdateServices-UI}

Name        : RSAT-DHCP
InstallName : {DHCPServer-Tools}

Name        : RSAT-DNS-Server
InstallName : {DNS-Server-Tools}

Name        : RSAT-Fax
InstallName : {FaxServiceConfigRole}

Name        : RSAT-ADRMS
InstallName : {RightsManagementServicesManagementTools}

Name        : RSAT-ADCS
InstallName : {ADCertificateServicesManagementTools}

Name        : RSAT-Online-Responder
InstallName : {OnlineRevocationServicesManagementTools}

Name        : RSAT-ADCS-Mgmt
InstallName : {CertificateServicesManagementTools}

Name        : RSAT-File-Services
InstallName : {Server-Manager-RSAT-File-Services}

Name        : RSAT-DFS-Mgmt-Con
InstallName : {DfsMgmt}

Name        : RSAT-NFS-Admin
InstallName : {NFS-Administration}

Name        : RSAT-FSRM-Mgmt
InstallName : {FSRM-Management}

Name        : RSAT-CoreFile-Mgmt
InstallName : {CoreFileServer-RSAT}

Name        : RSAT-RemoteAccess
InstallName : {RemoteAccessMgmtTools}

Name        : RSAT-RemoteAccess-Mgmt
InstallName : {DamgmtTools}

Name        : RSAT-RemoteAccess-PowerShell
InstallName : {RemoteAccessPowerShell}

Name        : RSAT-Print-Services
InstallName : {Printing-AdminTools-Collection}

Name        : RSAT-NPAS
InstallName : {HCSUI, NPSManagementTools}

Name        : WDS-AdminPack
InstallName : {Microsoft-Windows-Deployment-Services-Admin-Pack}

Name        : RSAT-VA-Tools
InstallName : {Security-SPP-Vmw}

Name        : Remote-Assistance
InstallName : {RemoteAssistance}

Name        : RPC-over-HTTP-Proxy
InstallName : {RPC-HTTP_Proxy}

Name        : FS-SMBBW
InstallName : {SMBBW}

Name        : SMTP-Server
InstallName : {Smtpsvc-Service-Update-Name}

Name        : SNMP-Service
InstallName : {SNMP}

Name        : SNMP-WMI-Provider
InstallName : {WMISnmpProvider}

Name        : WindowsStorageManagementService
InstallName : {WindowsStorageManagementService}

Name        : Telnet-Client
InstallName : {TelnetClient}

Name        : Telnet-Server
InstallName : {TelnetServer}

Name        : TFTP-Client
InstallName : {TFTP}

Name        : FS-SMB1
InstallName : {SMB1Protocol}

Name        : qWave
InstallName : {QWAVE}

Name        : Windows-Identity-Foundation
InstallName : {Windows-Identity-Foundation}

Name        : PowerShellRoot
InstallName : {MicrosoftWindowsPowerShellRoot}

Name        : PowerShell
InstallName : {MicrosoftWindowsPowerShell}

Name        : PowerShell-V2
InstallName : {MicrosoftWindowsPowerShellV2}

Name        : PowerShell-ISE
InstallName : {MicrosoftWindowsPowerShellISE}

Name        : WindowsPowerShellWebAccess
InstallName : {WindowsPowerShellWebAccess}

Name        : DSC-Service
InstallName : {DSC-Service}

Name        : Search-Service
InstallName : {File-Services-Search-Service, SearchEngine-Server-Package}

Name        : Migration
InstallName : {ServerMigration}

Name        : Windows-Server-Backup
InstallName : {WindowsServerBackup}

Name        : Biometric-Framework
InstallName : {BiometricFramework}

Name        : WFF
InstallName : {WindowsFeedbackForwarder}

Name        : WAS
InstallName : {WAS-WindowsActivationService}

Name        : WAS-Process-Model
InstallName : {WAS-ProcessModel}

Name        : WAS-NET-Environment
InstallName : {WAS-NetFxEnvironment}

Name        : WAS-Config-APIs
InstallName : {WAS-ConfigurationAPI}

Name        : Windows-TIFF-IFilter
InstallName : {TIFFIFilter}

Name        : WinRM-IIS-Ext
InstallName : {Microsoft-Windows-Web-Services-for-Management-IIS-Extension}

Name        : WINS
InstallName : {WINSRuntime}

Name        : Wireless-Networking
InstallName : {WirelessNetworking}

Name        : WoW64-Support
InstallName : {ServerCore-WOW64}

Name        : XPS-Viewer
InstallName : {Xps-Foundation-Xps-Viewer}

Unterschiede zwischen Windows Funktionen bzw. Features bei der Installation

25 Januar 2016

Microsoft hat es über die letzten Jahre mal wieder geschafft ordentlich Verwirrung zu stiften. Wenn man Windows Funktionen wie z. B. das .NET-Framework installiert, so gibt es zig verschiedene Varianten wie man dies erreichen kann.

In diesem Zusammenhang findet man:

Enable-WindowsOptionalFeature
Install-WindowsFeature
Add-WindowsFeature
dism.exe
pkgmgr.exe

Ein schöne Übersicht welche Variante auf welcher Platform, sogar bis 2016 und Nano-Server verfügbar ist, findet man hier: http://peter.hahndorf.eu/blog/WindowsFeatureViaCmd

Nicht nur, dass es unterschiedliche Aufrufe zur Installation gibt, nein je nach Variante haben die Pakete auch unterschiedliche Namen!

Um nun z. B. das .Net 3.5 Framework zu installieren, verwendet man unter Windows Server 2012:

Install-WindowsFeature –Name NET-Framework-Core

und unter Windows 10:

Enable-WindowsOptionalFeature –Featurename NetFx3

Weitere Beispiele hier: http://blog.ittoby.com/2012/11/installing-net-35-on-windows8server.html

Entfernen der Minianwendungen bei Windows 7

29 Juli 2014

Wenn man die Minianwendungen unter Windows 7 loswerden möchte, dann gibt es keine direkte offensichtliche Variante. Nein man muss sich in die “Windows-Funktionen aktivieren oder deaktivieren” begeben.

Hier eine Anleitung mit Bildern: http://tipps4you.de/tipp-14-win7.html.

Aber mit Adminrechten ausgestatet, geht es auch einfacher per Eingabeaufforderung:

dism /online /disable-feature /FeatureName:WindowsGadgetPlatform

Es startet dann

Tool zur Abbildverwaltung für die Bereitstellung
Version: 6.1.7600.16385

Abbildversion: 6.1.7601.18489

Funktionen werden deaktiviert
[==========================100.0%==========================]
Der Vorgang wurde erfolgreich beendet.
Zum Abschließen dieses Vorgangs muss Windows neu gestartet werden.
Möchten Sie den Computer jetzt neu starten (J/N)?

Nun ist man die Plattform zu Windows-Minianwendungen los.

Nochmal zum Thema 16-Bit-Programme unter Windows 8.1 32-Bit und wie verhält es sich mit FONDUE.EXE und den Legacykomponenten?

15 September 2013

Nachdem das Thema im vorhergehenden Artikel https://newyear2006.wordpress.com/2013/09/15/16-bit-programme-unter-windows-8-es-muss-zuerst-die-16-bit-anwendungsuntersttzung-aktiviert-werden/ schon ausführlich beschrieben wurde, folgt hier nun die Fortsetzung speziell auf Windows 8.1 bezogen.

Die Microsofties scheinen für die Zukunft Großes zu planen und gehen immer mehr in die Richtung nur die Komponenten einzusetzen, die wirklich benötigt werden. Mein Vorschlag: Powershell verwenden und auf den ganzen GUI-Käse verzichten Smiley. Spaß beiseite, wenn man unter Windows 8.1 bei Windows-Features aktivieren oder deaktivieren schaut, fällt einem bei der 32-Bit Version NTVDM auf, unter 64-Bit gibt es nur Directplay. Profis wissen, NTVDM das ist die DOS-Maschine unter Windows NT Anno dazumal.

Im oben genannten Artikel wurde der Dialog beschrieben der beim Aufruf von 16-Bit-Programmen erscheint. Unter Windows 8.1 sieht dieser nun so aus:

image

Deutlich professioneller, fast wäre man geneigt “Modern App”-Like zu sagen! Aber die Funktion ist die Gleiche wie beim alten Dialog. Es wird die NTVDM-Umgebung eingerichtet, damit die alten 16-Bit-Programme aufgerufen werden können.

Um in Setupskripten diese Komponenten automatisch einrichten zu können, kann man DISM.EXE verwenden.

So aktiviert diese Zeile die Unterstützung für 16-Bit:

dism /online /enable-feature /all /featurename:NTVDM

diese schaltet sie wieder ab:

dism /online /disable-feature /featurename:NTVDM
dism /online /disable-feature /featurename:LegacyComponents

Diese Zeilen entsprechen quasi den RUNDLL32-NTVDMCPL.DLL-Aufrufen vom letzten Artikel.

Apropos, da ich oben Powershell genannt hatte, hier noch die Kommandos in Powershell:

Enable-WindowsOptionalFeature –Online –FeatureName NTVDM –All

Zum Ausschalten:

Disable-WindowsOptionalFeature –Online –FeatureName NTVDM
Disable-WindowsOptionalFeature –Online –FeatureName LegacyComponents

Und noch die Abfrage, ob das Feature aktuell aktiv ist oder nicht:

(Get-WindowsOptionalFeature –Online) | where FeatureName –eq NTVDM

dies gibt dann ein BasicFeatureObject zurück:

Feature Name: NTVDM
State              : Disabled

Wenn man den State direkt abfragen möchte, sieht das noch professioneller aus:

(((Get-WindowsOptionalFeature –Online) | where FeatureName –eq NTVDM).State) –eq [Microsoft.Dism.Commands.FeatureState]::Enabled

Dies liefert dann wirklich ein Boolean mit $true oder $false zurück, mit dem man dann arbeiten kann. Für alle Scriptschreiber beachten: Der FeatureState kann noch weitere Werte annehmen:

[Enum]::GetNames([Microsoft.Dism.Commands.FeatureState])

ergibt:

Disabled
DisablePending
Enabled
EnablePending
Superseded
PartiallyInstalled
DisabledWithPayloadRemoved

Schön, so haben wir hier einen Legacy-Artikel der den Bogen von 16-Bit-MS-DOS-Programmen in die wunderbare Welt der Monads mit Powershell schlägt.

Stopp, ich hatte in der Überschrift noch FONDUE.EXE erwähnt, das wollte ich jetzt nicht unterschlagen. Wer die im vorhergehenden Artikel beschriebene Variante zum Aufruf der Einstellungen für 16-Bit-Anwendungsprogramme in der Systemsteuerung probiert, der bekommt FONDUE.EXE zu Gesicht. FONDUE ist jetzt nichts zum Essen sondern steht eher für FeatureOnDemand, wo auch immer das U herkommt. Mmmh, vielleicht wenn man UE für UserExperience setzt. Ja, in Zeiten von Modern UI muss es so sein. Merken wir uns FONDUE steht für Feature On Demand User Experience! Siehe da, schon im August 2011 hat die BILD.DE darüber berichtet!!! http://www.bild.de/digital/internet/windows-betriebssysteme/windows-8-vorabversion-kurzt-test-c_b-19363404.bild.html. Erinnert mich an: Bild sprach mit dem Toten…