Neue Provisioning Cmdlets in Windows 10 v1703 Creators Update


Beim durchschauen der neuen Windows 10 Version bin ich auf ein neues Powershell Modul gestoßen. Es nennt sich schlicht und ergreifend Provisioning ist aber bereits in Version 3 verfügbar.

Cool ein neues Modul und dann gleich Version 3! Bei der Recherche mittels Google war nichts in der Richtung zu finden, auch die Hilfe des Moduls zeigte nur ins Nirvana. Also eine echte Neuentdeckung Smiley.

So schaut man sich die Modul Infos an:

PS C:\WINDOWS\system32> get-module provisioning|fl *

LogPipelineExecutionDetails : False
Name                        : Provisioning
Path                        : C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\Provisioning\provisioning.psm1
ImplementingAssembly        :
Definition                  : #
                              # Script Module file for provcmdlets module.
                              #
                              # Copyright (c) Microsoft Corporation
                              #
                              #
                              # Cmdlet aliases
                              #
                              Set-Alias Add-ProvisioningPackage Install-ProvisioningPackage
                              Set-Alias Remove-ProvisioningPackage Uninstall-ProvisioningPackage
                              Set-Alias Add-TrustedProvisioningCertificate Install-TrustedProvisioningCertificate
                              Set-Alias Remove-TrustedProvisioningCertificate Uninstall-TrustedProvisioningCertifi
                              Export-ModuleMember -Alias * -Function * -Cmdlet *
Description                 :
Guid                        : 1323f046-a4bd-47df-a8bc-8253eabc49b2
HelpInfoUri                 : http://go.microsoft.com/fwlink/?LinkId=525624
ModuleBase                  : C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\Provisioning
PrivateData                 :
Tags                        : {}
ProjectUri                  :
IconUri                     :
LicenseUri                  :
ReleaseNotes                :
RepositorySourceLocation    :
Version                     : 3.0
ModuleType                  : Script
Author                      : Microsoft Corporation
AccessMode                  : ReadWrite
ClrVersion                  : 4.0
CompanyName                 : Microsoft Corporation
Copyright                   : © Microsoft Corporation. All rights reserved.
DotNetFrameworkVersion      :
ExportedFunctions           : {}
Prefix                      :
ExportedCmdlets             : {[Export-ProvisioningPackage, Export-ProvisioningPackage], [Export-Trace, Export-Tra
                              [Get-ProvisioningPackage, Get-ProvisioningPackage], [Get-TrustedProvisioningCertific
                              Get-TrustedProvisioningCertificate]…}
ExportedCommands            : {[Export-ProvisioningPackage, Export-ProvisioningPackage], [Export-Trace, Export-Tra
                              [Get-ProvisioningPackage, Get-ProvisioningPackage], [Get-TrustedProvisioningCertific
                              Get-TrustedProvisioningCertificate]…}
FileList                    : {}
CompatiblePSEditions        : {}
ModuleList                  : {}
NestedModules               : {provcmdlets}
PowerShellHostName          :
PowerShellHostVersion       :
PowerShellVersion           : 4.0
ProcessorArchitecture       : None
Scripts                     : {}
RequiredAssemblies          : {}
RequiredModules             : {}
RootModule                  : provisioning.psm1
ExportedVariables           : {}
ExportedAliases             : {[Add-ProvisioningPackage, Add-ProvisioningPackage],
                              [Add-TrustedProvisioningCertificate, Add-TrustedProvisioningCertificate],
                              [Remove-ProvisioningPackage, Remove-ProvisioningPackage],
                              [Remove-TrustedProvisioningCertificate, Remove-TrustedProvisioningCertificate]}
ExportedWorkflows           : {}
ExportedDscResources        : {}
SessionState                : System.Management.Automation.SessionState
OnRemove                    :
ExportedFormatFiles         : {}
ExportedTypeFiles           : {}

Bei den NestedModules fällt provcmdlets auf. Sucht man damit in Google findet man gerade mal 10 Einträge und alles erst seit Ende 2016. Also alles noch ganz heiß!

provcmdlets findet man im Verzeichnis C:\Windows\System32\WindowsPowerShell\v1.0\Modules\Provisioning:

PS C:\WINDOWS\system32> dir C:\Windows\System32\WindowsPowerShell\v1.0\Modules\Provisioning

    Verzeichnis: C:\Windows\System32\WindowsPowerShell\v1.0\Modules\Provisioning

Mode                LastWriteTime         Length Name
—-                ————-         —— —-
-a—-       18.03.2017     21:57           6570 provautologger_add.reg
-a—-       18.03.2017     21:57            152 provautologger_del.reg
-a—-       18.03.2017     21:57          20992 provcmdlets.dll
-a—-       18.03.2017     21:57          90112 provcommon.dll
-a—-       18.03.2017     21:57           2238 provisioning.psd1
-a—-       18.03.2017     21:57            482 provisioning.psm1
-a—-       18.03.2017     21:57         745984 provpackageapi.dll
-a—-       18.03.2017     21:57           8378 provtrace.wprp
-a—-       18.03.2017     21:57          13312 wiminterop.dll

D. h. es gibt verschiedene DLL-Dateien und sogar Registry-Dateien die involviert sind. Bekommt man irgendwelche Infos von den DLL-Dateien?

PS C:\Windows\System32\WindowsPowerShell\v1.0\Modules\Provisioning> (dir).versioninfo| select comments, filedescription

Comments FileDescription
——– —————

 

 

         "ProvPackageAPI.DYNLINK"

Gähnende Leere. Schade.

Was ist nun an Cmdlets enthalten?

PS C:\WINDOWS\system32> get-command -Module
Provisioning

CommandType     Name                                               Version    Source
———–     —-                                               ——-    ——
Alias           Add-ProvisioningPackage                            3.0        Provisioning
Alias           Add-TrustedProvisioningCertificate                 3.0        Provisioning
Alias           Remove-ProvisioningPackage                         3.0        Provisioning
Alias           Remove-TrustedProvisioningCertificate              3.0        Provisioning
Cmdlet          Export-ProvisioningPackage                         3.0        Provisioning
Cmdlet          Export-Trace                                       3.0        Provisioning
Cmdlet          Get-ProvisioningPackage                            3.0        Provisioning
Cmdlet          Get-TrustedProvisioningCertificate                 3.0        Provisioning
Cmdlet          Install-ProvisioningPackage                        3.0        Provisioning
Cmdlet          Install-TrustedProvisioningCertificate             3.0        Provisioning
Cmdlet          Uninstall-ProvisioningPackage                      3.0        Provisioning
Cmdlet          Uninstall-TrustedProvisioningCertificate           3.0        Provisioning

Dabei verweisen die Add-Aliase auf die Install-Cmdlets und die Remove-Aliase auf die UnInstall-Cmdlets. Netto bleiben also folgende Cmdlets übrig:

Export-ProvisioningPackage
Export-Trace
Get-ProvisioningPackage
Get-TrustedProvisioningCertificate
Install-ProvisioningPackage
Install-TrustedProvisioningCertificate
Uninstall-ProvisioningPackage
Uninstall-TrustedProvisioningCertificate

Wenn man sich die Auflistung so anschaut, dann würde man meinen mit Get-ProvisioningPackage könnte man etwas anfangen. Dem ist leider nicht so. Auch Get-ProvisioningPackage –AllInstalledPackages brachte nichts zurück.

Also mal die Parameter so anschauen:

PS C:\> (get-command Get-ProvisioningPackage).Definition

Get-ProvisioningPackage [-PackageId] <string> [-LogsDirectoryPath <string>] [-WprpFile <string>]
[-ConnectedDevice] [<CommonParameters>]

Get-ProvisioningPackage [-PackagePath] <string> [-LogsDirectoryPath <string>] [-WprpFile
<string>] [-ConnectedDevice] [<CommonParameters>]

Get-ProvisioningPackage [-AllInstalledPackages] [-LogsDirectoryPath <string>] [-WprpFile
<string>] [-ConnectedDevice] [<CommonParameters>]

Jetzt hatte ich da so eine Idee, welche auch Version 3 erklärt. Denn es gibt in DISM sogenannte Provisioning Package Command Line Optionen https://msdn.microsoft.com/de-de/windows/hardware/commercialize/manufacture/desktop/dism-provisioning-package-command-line-options, welche seither noch keine Powershell Entsprechung gefunden haben. Wahrscheinlich sind die Provisioning Cmdlets darauf abgestellt?

Also die These mal schnell überprüft. Provisioning Packages haben ihre eigenen Dateiendungen nämlich .ppkg. Es finden sich auf Windows 10 Systemen im Verzeichnis C:\windows\Provisioning\Packages entsprechende Dateien:

PS C:\windows\Provisioning\Packages> dir

    Verzeichnis: C:\windows\Provisioning\Packages

Mode                LastWriteTime         Length Name
—-                ————-         —— —-
-a—-       18.03.2017     21:57           6139 Power.EnergyEstimationEngine.Control.ppkg
-a—-       18.03.2017     21:57           5654 Power.EnergyEstimationEngine.CPU.ppkg
-a—-       18.03.2017     21:57           5701 Power.EnergyEstimationEngine.Display.ppkg
-a—-       18.03.2017     21:57           5677 Power.EnergyEstimationEngine.MBB.ppkg
-a—-       18.03.2017     21:57           5622 Power.EnergyEstimationEngine.StandbyActivation.ppkg
-a—-       18.03.2017     21:57           6498 Power.EnergyEstimationEngine.Storage.ppkg
-a—-       18.03.2017     21:57           5637 Power.EnergyEstimationEngine.Telemetry.ppkg
-a—-       18.03.2017     21:57           5644 Power.EnergyEstimationEngine.Wifi.ppkg
-a—-       18.03.2017     21:57           6512 Power.Settings.Battery.ppkg
-a—-       18.03.2017     21:57           5718 Power.Settings.Button.ppkg
-a—-       18.03.2017     21:57           5612 Power.Settings.Disk.ppkg
-a—-       18.03.2017     21:57           5598 Power.Settings.Display.ppkg
-a—-       18.03.2017     21:57           5411 Power.Settings.EnergySaver.ppkg
-a—-       18.03.2017     21:57           5551 Power.Settings.IdleResiliency.ppkg
-a—-       18.03.2017     21:57           5631 Power.Settings.PCIExpress.ppkg
-a—-       18.03.2017     21:57          11478 Power.Settings.Processor.ppkg
-a—-       18.03.2017     21:57           6623 Power.Settings.Sleep.ppkg

Was passiert nun wenn man Get-ProvisioningPackage mit so einer Datei aufruft?

PS C:\windows\Provisioning\Packages> Get-ProvisioningPackage -PackagePath .\Power.Settings.Processor.ppkg

IsInstalled     : False
PackageID       : fc01e91f-914c-45af-9d7c-0b2e5fbedf62
PackageName     : Power.Settings.Processor
PackagePath     : C:\windows\Provisioning\Packages\Power.Settings.Processor.ppkg
Description     :
Rank            : 0
Altitude        : 0
Version         : 7.0
OwnerType       : Microsoft
Notes           :
LastInstallTime :
Result          :

Ja das sieht ja nun schon wesentlich besser aus. Also handelt es sich tatsächlich um Cmdlets um ppkg-Dateien verwalten zu können. These also bestätigt.

Und wo braucht man nun ppkg-Dateien konkret? Zur Einrichtung von Rechnern oder Handies, dazu musste man seither bei den Einstellungen auf Konten, dort auf Arbeits- und Schulkonto gehen und da dann auf Bereitstellungspaket hinzufügen oder entfernen. Dies geht nun wesentlich einfacher!

Hier eine Beschreibung zum Thema: https://technet.microsoft.com/en-us/itpro/windows/deploy/provisioning-how-it-works.

Man könnte nun noch viel mehr probieren aber die Richtung ist schon mal klar.

Advertisements

Eine Antwort to “Neue Provisioning Cmdlets in Windows 10 v1703 Creators Update”

  1. mode Says:

    Ich bin gerade zufaellig auf Ihrer Website gelandet (war auf der Suche nach einer anderen Seite).
    Ich moechte diese Seite nicht verlassen, ohne Dir ein Lob zu dieser klar strukturierten und schick designten Seite
    zu hinterlassen!

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: