Entwickeln von PowerShell-Cmdlets für Nano ServerDeveloping PowerShell Cmdlets for Nano Server

Gilt für: Windows Server 2016Applies To: Windows Server 2016

Wichtig

Ab Windows Server, Version 1709, steht Nano Server nur als Basis-Betriebssystemimage für Container zur Verfügung.Starting in Windows Server, version 1709, Nano Server will be available only as a container base OS image. Sieh dir die Änderungen an Nano Server an, und erfahre, was dies bedeutet.Check out Changes to Nano Server to learn what this means.

ÜbersichtOverview

PowerShell Core ist standardmäßig in allen Nano Server-Installationen enthalten.Nano Server includes PowerShell Core by default in all Nano Server installations. PowerShell Core ist eine reduzierte Edition von PowerShell, die auf .Net Core erstellt wird und auf reduzierten Editionen von Windows, wie z.B. Nano Server und Windows IoT Core, ausgeführt wird.PowerShell Core is a reduced-footprint edition of PowerShell that is built on .NET Core and runs on reduced-footprint editions of Windows, such as Nano Server and Windows IoT Core. PowerShell Core arbeitet genauso wie andere PowerShell-Editionen, wie z.B. Windows PowerShell unter Windows Server 2016.PowerShell Core functions in the same way as other editions of PowerShell, such as Windows PowerShell running on Windows Server 2016. Jedoch bedeutet die reduzierte Version von Nano Server, dass nicht alle PowerShell-Funktionen von Windows Server 2016 in PowerShell Core in Nano Server verfügbar sind.However, the reduced footprint of Nano Server means that not all PowerShell features from Windows Server 2016 are available in PowerShell Core on Nano Server.

Wenn Sie über vorhandene PowerShell-Cmdlets verfügen, die Sie auf Nano Server ausführen möchten, oder wenn Sie zu diesem Zweck neue entwickeln, finden Sie in diesem Thema Tipps und Vorschläge, um dies zu vereinfachen.If you have existing PowerShell cmdlets that you'd like to run on Nano Server, or are developing new ones for that purpose, this topic includes tips and suggestions that should help make that easier.

PowerShell-EditionenPowerShell editions

Ab Version 5.1 ist PowerShell in verschiedenen Editionen verfügbar, die unterschiedliche Funktionen mitbringen und zu unterschiedlichen Plattformen kompatibel sind.Starting with version 5.1, PowerShell is available in different editions which denote varying feature sets and platform compatibility.

  • Desktop-Edition: Diese Edition basiert auf .NET Framework und bietet Kompatibilität mit PowerShell-Versionen, die auf Skripts und Module abzielen und unter vollwertigen Editionen von Windows ausgeführt werden, z. B. Server Core und Windows Desktop.Desktop Edition: Built on .NET Framework and provides compatibility with scripts and modules targeting versions of PowerShell running on full footprint editions of Windows such as Server Core and Windows Desktop.
  • Core Edition: Diese Edition basiert auf .NET Core und bietet Kompatibilität mit Skripts und Modulen, die auf PowerShell-Versionen abzielen, die auf reduzierten Editionen von Windows ausgeführt werden, z. B. Nano Server und Windows IoT.Core Edition: Built on .NET Core and provides compatibility with scripts and modules targeting versions of PowerShell running on reduced footprint editions of Windows such as Nano Server and Windows IoT.

Die ausgeführte Version von PowerShell wird in der PSEdition-Eigenschaft von $PSVersionTable angezeigt.The running edition of PowerShell is shown in the PSEdition property of $PSVersionTable.

$PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.14300.1000
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
CLRVersion                     4.0.30319.42000
BuildVersion                   10.0.14300.1000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Modulautoren können deklarieren, dass ihre Module mit einer oder mehreren PowerShell-Editionen kompatibel sein sollen, indem Sie den CompatiblePSEditions-Modulmanifestschlüssel verwenden.Module authors can declare their modules to be compatible with one or more PowerShell editions using the CompatiblePSEditions module manifest key. Dieser Schlüssel wird nur auf PowerShell 5.1 oder höher unterstützt.This key is only supported on PowerShell 5.1 or later.

New-ModuleManifest -Path .\TestModuleWithEdition.psd1 -CompatiblePSEditions Desktop,Core -PowerShellVersion 5.1
$moduleInfo = Test-ModuleManifest -Path \TestModuleWithEdition.psd1
$moduleInfo.CompatiblePSEditions
Desktop
Core

$moduleInfo | Get-Member CompatiblePSEditions

   TypeName: System.Management.Automation.PSModuleInfo

Name                 MemberType Definition
----                 ---------- ----------
CompatiblePSEditions Property   System.Collections.Generic.IEnumerable[string] CompatiblePSEditions {get;}

Beim Abrufen einer Liste der verfügbaren Module können Sie die Liste nach PowerShell-Edition filtern.When getting a list of available modules, you can filter the list by PowerShell edition.

Get-Module -ListAvailable | ? CompatiblePSEditions -Contains Desktop

    Directory: C:\Program Files\WindowsPowerShell\Modules


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   1.0        ModuleWithPSEditions

Get-Module -ListAvailable | ? CompatiblePSEditions -Contains Core | % CompatiblePSEditions
Desktop
Core

Skriptautoren können verhindern, dass ein Skript ausgeführt wird, es sei denn, es wird auf einer kompatiblen Edition von PowerShell mithilfe des PSEdition-Parameters auf einer #requires-Anweisung ausgeführt.Script authors can prevent a script from executing unless it is run on a compatible edition of PowerShell using the PSEdition parameter on a #requires statement.

Set-Content C:\script.ps1 -Value #requires -PSEdition Core
Get-Process -Name PowerShell
Get-Content C:\script.ps1
#requires -PSEdition Core
Get-Process -Name PowerShell

C:\script.ps1
C:\script.ps1 : The script 'script.ps1' cannot be run because it contained a #requires statement for PowerShell editions 'Core'. The edition of PowerShell that is required by the script does not match the currently running PowerShell Desktop edition.
At line:1 char:1
+ C:\script.ps1
+ ~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (script.ps1:String) [], RuntimeException
    + FullyQualifiedErrorId : ScriptRequiresUnmatchedPSEdition

Installieren von Nano ServerInstalling Nano Server

Einen Schnellstart sowie detaillierte Schritte zur Installation von Nano Server auf virtuellen oder physischen Computern finden Sie im übergeordneten Thema dieses Themas: Installieren von Nano Server.Quick-start and detailed steps for installing Nano Server on virtual or physical machines are provided in Install Nano Server, which is the parent topic for this one.

Hinweis

Für Entwicklungen auf Nano Server könnte es hilfreich sein, Nano Server zu installieren, indem Sie den Parameter „-Development“ von New-NanoServerImage verwenden.For development work on Nano Server, you might find it useful to install Nano Server by using the -Development parameter of New-NanoServerImage. Dadurch wird es möglich, unsignierte Treiber zu installieren, Debugger-Binärdateien zu kopieren, einen Port für das Debuggen zu öffnen, die Testsignierung zu aktivieren und die Installation von AppX-Paketen ohne Entwicklerlizenz zu aktivieren.This will enable installation of unsigned drivers, copy debugger binaries, open a port for debugging, enable test signing and enable installation of AppX packages without a developer license. Beispiel:For example:

New-NanoServerImage -DeploymentType Guest -Edition Standard -MediaPath \\Path\To\Media\en_us -BasePath .\Base -TargetPath .\NanoServer.wim -Development

Bestimmen des Cmdlet-ImplementierungstypsDetermining the type of cmdlet implementation

PowerShell unterstützt eine Reihe von Implementierungstypen für Cmdlets. Der Typ, den Sie verwendet haben, bestimmt den Prozess und die Tools, die zum Erstellen oder Portieren dieses Typs verwendet werden, damit dieser auf Nano Server funktioniert.PowerShell supports a number of implementation types for cmdlets, and the one you've used determines the process and tools involved in creating or porting it to work on Nano Server. Unterstützte Implementierungstypen sind folgende:Supported implementation types are:

  • CIM: besteht aus CDXML-Dateien, die über CIM-Anbieter (WMIv2-Anbieter) geschichtet werdenCIM - consists of CDXML files layered over CIM (WMIv2) providers
  • .NET: Besteht aus .NET-Assemblys, die verwaltete Cmdlet-Schnittstellen implementieren, die in der Regel in C# geschrieben sind..NET - consists of .NET assemblies implementing managed cmdlet interfaces, typically written in C#
  • PowerShell-Skript: besteht aus Skriptmodulen (.psm1) oder Skripts (.ps1), die in der PowerShell-Sprache geschrieben sindPowerShell Script - consists of script modules (.psm1) or scripts (.ps1) written in the PowerShell language

Wenn Sie nicht sicher sind, welche Implementierung Sie für vorhandene Cmdlets verwendet haben, die Sie portieren möchten, installieren Sie Ihr Produkt oder Feature und suchen Sie anschließend nach dem PowerShell-Modulordner an einem der folgenden Speicherorten:If you're not sure which implementation you've used for existing cmdlets you want to port, install your product or feature and then look for the PowerShell module folder in one of the following locations:

  • %windir%\system32\WindowsPowerShell\v1.0\Modules%windir%\system32\WindowsPowerShell\v1.0\Modules

  • %ProgramFiles%\WindowsPowerShell\Modules%ProgramFiles%\WindowsPowerShell\Modules

  • %UserProfile%\Documents\WindowsPowerShell\Modules%UserProfile%\Documents\WindowsPowerShell\Modules

  • <your product installation location>

    Überprüfen Sie diese Speicherorte auf die folgenden Details:Check in these locations for these details:

    • CIM-Cmdlets haben .cdxml-Dateierweiterungen.CIM cmdlets have .cdxml file extensions.
    • .NET-Cmdlets haben .dll-Dateierweiterungen bzw. haben Assemblys, die in dem GAC installiert werden, der in der PSD1-Datei unter den Feldern „RootModule“, „ModuleToProcess“ oder „NestedModules“ aufgelistet ist..NET cmdlets have .dll file extensions, or have assemblies installed to the GAC listed in the .psd1 file under the RootModule, ModuleToProcess, or NestedModules fields.
  • PowerShell-Skript-Cmdlets haben .psm1- oder .ps1-Datei-Erweiterungen.PowerShell script cmdlets have .psm1 or .ps1 file extensions.

Portieren von CIM-CmdletsPorting CIM cmdlets

Im Allgemeinen sollten diese Cmdlets in Nano Server funktionieren, ohne dass eine Konvertierung erforderlich ist.Generally, these cmdlets should work in Nano Server without any conversion necessary. Sie müssen jedoch den zugrunde liegenden WMIv2-Anbieter so portieren, dass er auf Nano Server ausgeführt wird, falls dies noch nicht geschehen ist.However, you must port the underlying WMI v2 provider to run on Nano Server if that has not already been done.

Erstellen von C++-Code für Nano ServerBuilding C++ for Nano Server

Damit C++-DLLs unter Nano Server funktionieren, kompilieren Sie diese für Nano Server, anstatt für eine spezifische Edition.To get C++ DLLs working on Nano Server, compile them for Nano Server rather than for a specific edition.

Erforderliche Komponenten und eine exemplarische Vorgehensweise zum Entwickeln von C++ unter Nano Server finden Sie im Blogbeitrag Developing Native Apps on Nano Server (Entwickeln von nativen Apps unter Nano Server).For prerequisites and a walkthrough of developing C++ on Nano Server, see Developing Native Apps on Nano Server.

Portieren von .NET-CmdletsPorting .NET cmdlets

Die Mehrheit des C#-Codes wird unter Nano Server unterstützt.Most C# code is supported on Nano Server. Sie können ApiPort verwenden, um auf inkompatible APIs zu prüfen.You can use ApiPort to scan for incompatible APIs.

PowerShell Core SDKPowershell Core SDK

Das Modul „Microsoft.PowerShell.NanoServer.SDK“ ist im PowerShell-Katalog verfügbar, um das Entwickeln von .NET-Cmdlets mithilfe von Visual Studio 2015 Update 2 zu vereinfachen, das auf die in Nano Server verfügbaren Versionen von CoreCLR und PowerShell Core ausgerichtet ist.The module Microsoft.PowerShell.NanoServer.SDK is available in the PowerShell Gallery to facilitate developing .NET cmdlets using Visual Studio 2015 Update 2 that target the versions of CoreCLR and PowerShell Core available in Nano Server. Sie können das Modul mithilfe von PowerShellGet mit dem folgenden Befehl installieren:You can install the module using PowerShellGet with this command:

Find-Module Microsoft.PowerShell.NanoServer.SDK -Repository PSGallery | Install-Module -Scope <scope>

Das PowerShell Core SDK-Modul stellt Cmdlets verfügbar, um die richtigen CoreCLR- und PowerShell Core-Referenzassemblys einzurichten, ein auf diese Referenzassemblys ausgerichtetes C#-Projekt in Visual Studio 2015 zu erstellen und den Remotedebugger auf einem Nano Server-Computer einzurichten, damit Entwickler ihre auf Nano Server ausgeführten .NET-Cmdlets remote in Visual Studio 2015 debuggen können.The PowerShell Core SDK module exposes cmdlets to set up the correct CoreCLR and PowerShell Core reference assemblies, create a C# project in Visual Studio 2015 targeting those reference assemblies, and set up the remote debugger on a Nano Server machine so that developers can debug their .NET cmdlets running on Nano Server remotely in Visual Studio 2015.

Das PowerShell Core SDK-Modul erfordert Visual Studio 2015 Update 2.The PowerShell Core SDK module requires Visual Studio 2015 Update 2. Wenn Sie Visual Studio 2015 nicht installiert haben, können Sie Visual Studio Community 2015 installieren.If you do not have Visual Studio 2015 installed, you can install Visual Studio Community 2015.

Das SDK-Modul hängt auch von den folgenden Funktionen ab, die in Visual Studio 2015 installiert werden müssen:The SDK module also depends on the following feature to be installed in Visual Studio 2015:

  • Windows- und Webentwicklung -> Entwicklungstools für universelle Windows-Apps -> Tools (1.3.1) und Windows 10 SDKWindows and Web Development -> Universal Windows App Development Tools -> Tools (1.3.1) and Windows 10 SDK

Überprüfen Sie Ihre Installation von Visual Studio, bevor Sie das SDK-Modul verwenden, um sicherzustellen, dass diese Voraussetzungen erfüllt sind.Review your Visual Studio installation before using the SDK module to ensure these prerequisites are satisfied. Stellen Sie sicher, dass Sie die oben genannte Funktion während der Installation von Visual Studio auswählen, oder ändern Sie Ihre vorhandene Visual Studio 2015-Installation, um sie zu installieren.Make sure you select to install the above feature during the Visual Studio installation, or modify your existing Visual Studio 2015 installation to install it.

Das PowerShell Core SDK-Modul enthält die folgenden Cmdlets:The PowerShell Core SDK module includes the following cmdlets:

  • New-NanoCSharpProject: Erstellt ein neues Visual Studio-C#-Projekt, das auf CoreCLR und PowerShell Core ausgerichtet ist, die im Windows Server 2016-Release von Nano Server enthalten sind.New-NanoCSharpProject: Creates a new Visual Studio C# project targeting CoreCLR and PowerShell Core included in the Windows Server 2016 release of Nano Server.
  • Show-SdkSetupReadMe: Öffnet den SDK-Stammordner im Datei-Explorer sowie die Datei „README.txt“ für das manuelle Setup.Show-SdkSetupReadMe: Opens the SDK root folder in File Explorer and opens the README.txt file for manual setup.
  • Install-RemoteDebugger: Installiert und konfiguriert den Remotedebugger von Visual Studio auf einem Nano Server-Computer.Install-RemoteDebugger: Installs and configures the Visual Studio remote debugger on a Nano Server machine.
  • Start-RemoteDebugger: Startet den Remotedebugger auf einem Remotecomputer, auf dem Nano Server ausgeführt wird.Start-RemoteDebugger: Starts the remote debugger on a remote machine running Nano Server.
  • Stop-RemoteDebugger: Beendet den Remotedebugger auf einem Remotecomputer, auf dem Nano Server ausgeführt wird.Stop-RemoteDebugger: Stops the remote debugger on a remote machine running Nano Server.

Ausführliche Informationen zur Verwendung dieser Cmdlets erhalten Sie, indem Sie nach der Installation und der Ausführung des Moduls wie folgt für jedes Cmdlet Get-Help ausführen:For detailed information about how to use those cmdlets, run Get-Help on each cmdlet after installing and importing the module as follows:

Get-Command -Module Microsoft.PowerShell.NanoServer.SDK | Get-Help -Full

Suchen nach kompatiblen APIsSearching for compatible APIs

Sie können im API-Katalog nach .NET Core suchen oder CoreCLR-Referenzassemblys disassemblieren.You can search in the API catalog for .NET Core or disassemble Core CLR reference assemblies. Weitere Informationen zur Plattformportabilität von .NET-APIs finden Sie unter Platform Portability (Plattformportabilität).For more information about platform portability of .NET APIs, see Platform Portability

PInvokePInvoke

In CoreCLR, das von Nano Server verwendet wird, wurden einige grundlegende DLLs wie z.B. „kernel32.dll“ und „advapi32.dll“ in zahlreiche API-Sätze aufgeteilt. Sie müssen daher sicherstellen, dass Ihre PInvokes auf die richtige API verweisen.In the Core CLR that Nano Server uses, some fundamental DLLs such as kernel32.dll and advapi32.dll were split into numerous API sets, so you'll need to ensure that your PInvokes reference the correct API. Jede Inkompatibilität äußert sich in einem Laufzeitfehler.Any incompatibility will manifest as a runtime error.

Eine Liste der unter Nano Server unterstützten nativen APIs finden Sie unter Nano Server APIs (Nano Server-APIs).For a list of native APIs supported on Nano Server, see Nano Server APIs.

Erstellen von C# für Nano ServerBuilding C# for Nano Server

Sobald ein C#-Projekt in Visual Studio 2015 mithilfe von New-NanoCSharpProject erstellt wird, können Sie es in Visual Studio einfach erstellen, indem Sie auf das Menü Erstellen klicken und Projekt erstellen oder Projektmappe erstellen auswählen.Once a C# project is created in Visual Studio 2015 by using New-NanoCSharpProject, you can simply build it in Visual Studio by clicking the Build menu and selecting Build Project or Build Solution. Die generierten Assemblys werden auf die richtigen Versionen von CoreCLR und PowerShell Core ausgerichtet, die in Nano Server enthalten sind, und Sie können die Assemblys einfach auf einen Computer kopieren, auf dem Nano Server ausgeführt wird, und diese verwenden.The generated assemblies will be targeting the correct CoreCLR and PowerShell Core shipped in Nano Server, and you can just copy the assemblies to a computer running Nano Server and use them.

Erstellen von verwaltetem C++-Code (CPP/CLI) für Nano ServerBuilding managed C++ (CPP/CLI) for Nano Server

Der verwaltete C++-Code wird für CoreCLR nicht unterstützt.Managed C++ is not supported for CoreCLR. Beim Portieren zu CoreCLR schreiben Sie verwalteten C++-Code in C# um und führen alle nativen Aufrufe über PInvoke durch.When porting to CoreCLR, rewrite managed C++ code in C# and make all native calls through PInvoke.

Portieren von PowerShell-Skript-CmdletsPorting PowerShell script cmdlets

PowerShell Core verfügt über die vollständige PowerShell-Sprachparität mit anderen Editionen von PowerShell, einschließlich der unter Windows Server 2016 und Windows 10 ausgeführten Edition.PowerShell Core has full PowerShell language parity with other editions of PowerShell, including the edition running on Windows Server 2016 and Windows 10. Beim Portieren von PowerShell-Skript-Cmdlets zu Nano Server sollten Sie jedoch die folgenden Faktoren bedenken:However, when porting PowerShell script cmdlets to Nano Server, keep these factors in mind:

  • Bestehen Abhängigkeiten von anderen Cmdlets?Are there dependencies on other cmdlets? Sind diese Cmdlets unter Nano Server verfügbar, wenn dies der Fall ist?If so, are those cmdlets available on Nano Server. Informationen dazu, welche nicht verfügbar sind, finden Sie unter PowerShell on Nano Server (PowerShell unter Nano Server).See PowerShell on Nano Server for information about what is not available.
  • Funktionieren die Assemblys weiterhin, wenn Abhängigkeiten von Assemblys bestehen, die zur Laufzeit geladen werden?If you have dependencies on assemblies that are loaded at runtime, will they still work?
  • Wie können Sie das Skript remote Debuggen?How can you debug the script remotely?
  • Wie können Sie von WMI .NET zu MI .NET migrieren?How can you migrate from WMI .Net to MI .Net?

Abhängigkeit von integrierten CmdletsDependency on built-in cmdlets

Nicht alle Cmdlets in Windows Server 2016 sind unter Nano Server verfügbar (siehe PowerShell on Nano Server (PowerShell unter Nano Server)).Not all cmdlets in Windows Server 2016 are available on Nano Server (see PowerShell on Nano Server). Die beste Methode besteht darin, einen virtuellen Nano Server-Computer einzurichten und zu ermitteln, ob die Cmdlets, die Sie benötigen, verfügbar sind.The best approach is to set up a Nano Server virtual machine and discover whether the cmdlets you need are available. Führen Sie hierzu Enter-PSSession aus, um eine Verbindung mit dem Ziel-Nano Server herzustellen, und führen Sie anschließend Get-Command -CommandType Cmdlet, Function aus, um die Liste mit verfügbaren Cmdlets abzurufen.To do this, run Enter-PSSession to connect to the target Nano Server and then run Get-Command -CommandType Cmdlet, Function to get the list of available cmdlets.

Erwägen der Verwendung von PowerShell-KlassenConsider using PowerShell classes

Add-Type wird zum Kompilieren von C#-Inlinecode unter Nano Server unterstützt.Add-Type is supported on Nano Server for compiling inline C# code. Wenn Sie neuen Code schreiben oder vorhandenen Code portieren, sollten Sie ebenfalls die Verwendung von PowerShell-Klassen zum Definieren von benutzerdefinierten Typen in Erwägung ziehen.If you're writing new code or porting existing code, you might also consider using PowerShell classes to define custom types. Sie können PowerShell-Klassen sowohl für Eigenschaftenbehälterszenarios als auch für Enumerationen verwenden.You can use PowerShell classes for property bag scenarios as well as for Enums. Wenn Sie ein PInvoke durchführen müssen, tun Sie dies über C# mithilfe von Add-Type oder in einer vorkompilierten Assembly.If you need to do a PInvoke, do this via C# using Add-Type or in a pre-compiled assembly. Im folgenden Beispiel wird die Verwendung von Add-Type dargestellt:Here's a sample showing the use of Add-Type:

Add-Type -ReferencedAssemblies ([Microsoft.Management.Infrastructure.Ciminstance].Assembly.Location) -TypeDefinition @'
public class TestNetConnectionResult
{
   // The compute name
   public string ComputerName = null;
   // The Remote IP address used for connectivity
   public System.Net.IPAddress RemoteAddress = null;
}
'@
# Create object and set properties
$result = New-Object TestNetConnectionResult
$result.ComputerName = Foo
$result.RemoteAddress = 1.1.1.1

Dieses Beispiel zeigt die Verwendung von PowerShell-Klassen unter Nano Server:This sample shows using PowerShell classes on Nano Server:

class TestNetConnectionResult
{
   # The compute name
  [string] $ComputerName

  #The Remote IP address used for connectivity
  [System.Net.IPAddress] $RemoteAddress
}
# Create object and set properties
$result = [TestNetConnectionResult]::new()
$result.ComputerName = Foo
$result.RemoteAddress = 1.1.1.1

Remotedebuggen von SkriptsRemotely debugging scripts

Stellen Sie eine Verbindung mit dem Remotecomputer her, indem Sie Enter-PSsession aus PowerShell ISE verwenden, um ein Skript remote zu debuggen.To remotely debug a script, connect to the remote computer using Enter-PSsession from the PowerShell ISE. Sie können psedit <file_path> einmal innerhalb der Sitzung ausführen, und eine Kopie der Datei wird in Ihrer lokalen PowerShell ISE geöffnet.Once inside the session, you can run psedit <file_path> and a copy of the file will be open in your local PowerShell ISE. Anschließend können Sie das Skript debuggen, als ob es lokal ausgeführt würde, indem Sie Haltepunkte festlegen.Then, you can debug the script as if it were running locally by setting breakpoints. Darüber hinaus werden alle Änderungen, die Sie an dieser Datei vornehmen, in der Remoteversion gespeichert.Also, any changes you make to this file will be saved in the remote version.

Migrieren von WMI .NET zu MI .NETMigrating from WMI .NET to MI .NET

WMI .NET wird nicht unterstützt. Daher müssen alle Cmdlets, die die alte API verwenden, zur unterstützten WMI-API migrieren: MI. .NET.WMI .NET is not supported, so all cmdlets using the old API must migrate to the supported WMI API: MI. NET. Sie können direkt über C# oder die Cmdlets im CimCmdlets-Modul auf MI . NET zugreifen.You can access MI .NET directly through C# or through the cmdlets in the CimCmdlets module.

CimCmdlets-ModuleCimCmdlets module

Die WMIv1-Cmdlets (z.B. Get-WmiObject) werden unter Nano Server nicht unterstützt.The WMI v1 cmdlets (e.g., Get-WmiObject) are not supported on Nano Server. Die CIM-Cmdlets (z.B. Get-CimInstance) im CimCmdlets-Modul werden jedoch unterstützt.However, the CIM cmdlets (e.g., Get-CimInstance) in the CimCmdlets module are supported. Die CIM-Cmdlets sind ziemlich eng an die WMIv1-Cmdlets angelehnt.The CIM cmdlets map pretty closely to the WMI v1 cmdlets. Beispielsweise stimmt Get-WmiObject mit Get-CimInstance überein, das sehr ähnliche Parameter verwendet.For example, Get-WmiObject correlates with Get-CimInstance using very similar parameters. Die Methodenaufrufsyntax weicht leicht ab, ist jedoch über Invoke-CimMethod gut dokumentiert.Method invocation syntax is slightly different, but is well documented via Invoke-CimMethod. Seien Sie vorsichtig bei der Parametereingabe.Be careful regarding parameter typing. MI .NET hat strengere Anforderungen hinsichtlich Methodenparametertypen.MI .NET has stricter requirements regarding method parameter types.

C#-APIC# API

WMI .NET umschließt die WMIv1-Schnittstelle, während MI .NET die WMIv2-Schnittstelle (CIM-Schnittstelle) umschließt.WMI .NET wraps the WMIv1 interface, while MI .NET wraps the WMIv2 (CIM) interface. Die zur Verfügung gestellten Klassen können abweichen, die zugrundeliegenden Vorgänge sind jedoch sehr ähnlich.The classes exposed might be different, but the underlying operations are very similar. Sie listen Instanzen von Objekten auf oder rufen diese ab und rufen Vorgänge für diese auf, um Aufgaben zu erfüllen.You enumerate or get instances of objects and invoke operations on them to accomplish tasks.