PowerShell na serwerze Nano Server

Dotyczy: system Windows Server 2016

Wersje programu PowerShell

Od wersji 5.1 program PowerShell jest dostępny w różnych wersjach, które charakteryzują się różnymi zestawami funkcji i zgodnością z różnymi platformami.

  • Wersja Desktop: jest oparta na programie .NET Framework i zapewnia zgodność ze skryptami i modułami przeznaczonymi dla wersji programu PowerShell działających w pełnych wersjach systemu Windows, takich jak instalacja Podstawowe funkcje serwera i system Windows dla komputerów stacjonarnych.
  • Wersja Core: jest oparta na module .NET Core i zapewnia zgodność ze skryptami i modułami przeznaczonymi dla wersji programu PowerShell działających w ograniczonych wersjach systemu Windows, takich jak system Nano Server i Windows IoT.

Informacje o działającej wersji programu PowerShell można znaleźć we właściwości PSEdition tabeli $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  

Autorzy modułów mogą zadeklarować zgodność swoich modułów z jedną lub kilkoma wersjami programu PowerShell przy użyciu klucza manifestu modułu CompatiblePSEditions. Ten klucz jest obsługiwany tylko w programie PowerShell 5.1 i w nowszych wersjach.

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;}  

Podczas pobierania listy dostępnych modułów można filtrować tę listę według wersji programu PowerShell.

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  

Autorzy skryptów mogą uniemożliwić wykonywanie skryptu, jeśli nie jest on uruchamiany w zgodnej wersji programu PowerShell, przy użyciu parametru PSEdition w instrukcji #requires.

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  

Różnice w programie PowerShell na serwerze Nano Server

Domyślnie wszystkie instalacje systemu Nano Server zawierają program PowerShell Core. PowerShell Core to ograniczona wersja programu PowerShell, która jest oparta na module .NET Core i działa w ograniczonych wersjach systemu Windows, takich jak Nano Server i Windows IoT Core. Program PowerShell Core działa tak jak inne wersje programu PowerShell, na przykład program Windows PowerShell w systemie Windows Server 2016. Jednak ograniczony charakter systemu Nano Server oznacza, że nie wszystkie funkcje programu PowerShell z systemu Windows Server 2016 są dostępne w programie PowerShell Core w systemie Nano Server.

Funkcje programu Windows PowerShell niedostępne na serwerze Nano Server

  • Adaptery typu ADSI, ADO i WMI
  • Enable-PSRemoting, Disable-PSRemoting (komunikacja zdalna programu PowerShell jest domyślnie włączona; zobacz sekcja „Używanie komunikacji zdalnej programu Windows PowerShell” w temacie Instalowanie serwera z systemem Nano Server).
  • Zaplanowane zadania i moduł PSScheduledJob
  • Polecenia cmdlet komputera służące do przyłączania do domeny { Add | Remove } (inne metody przyłączenia do domeny serwera z systemem Nano Server zawiera sekcja „Przyłączanie serwera Nano Server do domeny” w temacie Instalowanie serwera z systemem Nano Server).
  • Reset-ComputerMachinePassword, Test-ComputerSecureChannel
  • Profile (można dodać skrypt uruchamiania dla przychodzących połączeń zdalnych za pomocą polecenia Set-PSSessionConfiguration)
  • Polecenia cmdlet schowka
  • Polecenia cmdlet EventLog { Clear | Get | Limit | New | Remove | Show | Write } (zamiast tego użyj poleceń cmdlet New-WinEvent i Get-WinEvent).
  • Polecenie cmdlet Get-PfxCertificate
  • Polecenia cmdlet TraceSource { Get | Set }
  • Polecenia cmdlet Counter { Get | Export | Import }
  • Niektóre polecenia cmdlet związane z siecią Web { New-WebServiceProxy, Send-MailMessage, ConvertTo-Html }
  • Rejestrowanie i śledzenie za pomocą modułu PSDiagnostics
  • Get-HotFix (aby uzyskać aktualizacje i zarządzać nimi na serwerze Nano Server, zobacz Zarządzanie serwerem Nano Server).
  • Niejawne polecenia cmdlet do komunikacji zdalnej { Export-PSSession | Import-PSSession }
  • New-PSTransportOption
  • Transakcje programu PowerShell i polecenia cmdlet Transaction { Complete | Get | Start | Undo | Use }
  • Infrastruktura, moduły i polecenia cmdlet przepływów pracy programu PowerShell
  • Out-Printer
  • Update-List
  • Polecenia cmdlet usługi WMI w wersji 1: Get-WmiObject, Invoke-WmiMethod, Register-WmiEvent, Remove-WmiObject, Set-WmiInstance (zamiast tego użyj modułu CimCmdlets)

Używanie konfiguracji żądanego stanu programu Windows PowerShell za pomocą systemu Nano Server

Przy użyciu konfiguracji żądanego stanu programu Windows PowerShell (DSC, Desired State Configuration) można zarządzać systemem Nano Server jako węzłami docelowymi. Obecnie węzłami z uruchomionym systemem Nano Server z konfiguracją DSC można zarządzać wyłącznie w trybie wypychania. Nie wszystkie funkcje konfiguracji DSC działają z systemem Nano Server.

Aby uzyskać szczegółowe informacje, zobacz Using DSC on Nano Server (Używanie konfiguracji DSC na serwerze z systemem Nano Server).