A Windows PowerShell kompatibilitásának ismertetéseAbout Windows PowerShell compatibility

RÖVID LEÍRÁSSHORT DESCRIPTION

A PowerShell 7 Windows PowerShell kompatibilitási funkcióit ismerteti.Describes the Windows PowerShell Compatibility functionality for PowerShell 7.

HOSSZÚ LEÍRÁSLONG DESCRIPTION

Ha a modul jegyzékfájlja azt jelzi, hogy a modul kompatibilis a PowerShell Core-nal, a mappában található modulok a %windir%\system32\WindowsPowerShell\v1.0\Modules Windows PowerShell kompatibilitási funkciója segítségével töltődnek be a háttérben futó Windows powershell 5,1-folyamatba.Unless the module manifest indicates that module is compatible with PowerShell Core, modules in the %windir%\system32\WindowsPowerShell\v1.0\Modules folder are loaded in a background Windows PowerShell 5.1 process by Windows PowerShell Compatibility feature.

A kompatibilitási funkció használataUsing the Compatibility feature

Ha az első modul a Windows PowerShell kompatibilitási funkciójával lett importálva, a PowerShell létrehoz egy nevű távoli munkamenetet, WinPSCompatSession amely egy háttérben futó Windows powershell 5,1-folyamaton fut.When the first module is imported using Windows PowerShell Compatibility feature, PowerShell creates a remote session named WinPSCompatSession that is running in a background Windows PowerShell 5.1 process. Ez a folyamat akkor jön létre, amikor a kompatibilitási szolgáltatás az első modult importálja.This process is created when the Compatibility feature imports the first module. A folyamat le van zárva, amikor az utolsó ilyen modult eltávolította (a használatával Remove-Module ), vagy amikor a PowerShell-folyamat kilép.The process is closed when the last such module is removed (using Remove-Module) or when PowerShell process exits.

A munkamenetben betöltött modulokat a WinPSCompatSession rendszer implicit távelérési szolgáltatással használja, és az aktuális PowerShell-munkamenetben jelenik meg.The modules loaded in the WinPSCompatSession session are used via implicit remoting and reflected into current PowerShell session. Ez a PowerShell-feladatok esetében használt átviteli módszer.This is the same transport method used for PowerShell jobs.

Amikor egy modult importál a WinPSCompatSession munkamenetbe, az implicit távelérés létrehoz egy proxy modult a felhasználó $env:Temp címtárában, és importálja a proxykiszolgálót az aktuális PowerShell-munkamenetbe.When a module is imported into the WinPSCompatSession session, implicit remoting generates a proxy module in the user's $env:Temp directory and imports this proxy module into current PowerShell session. Ez lehetővé teszi a PowerShell számára, hogy észlelje, hogy a modul a Windows PowerShell kompatibilitási funkciójának használatával lett betöltve.This allows PowerShell to detect that the module was loaded using Windows PowerShell Compatibility functionality.

A munkamenet létrehozása után olyan műveletekhez is használható, amelyek nem működnek megfelelően a deszerializált objektumokon.Once the session is created, it can be used for operations that don't work correctly on deserialized objects. A teljes folyamat végrehajtása a Windows PowerShellben történik, és a rendszer csak a végső eredményt adja vissza.The entire pipeline is executed in Windows PowerShell and only the final result is returned. Például:For example:

$s = Get-PSSession -Name WinPSCompatSession
Invoke-Command -Session $s -ScriptBlock {
  "Running in Windows PowerShell version $($PSVersionTable.PSVersion)"
}

A kompatibilitási funkció kétféleképpen hívható meg:The Compatibility feature can be invoked in two ways:

  • Explicit módon egy modul importálásával a UseWindowsPowerShell paraméter használatávalExplicitly by importing a module using the UseWindowsPowerShell parameter

    Import-Module -Name ScheduledTasks -UseWindowsPowerShell
    
  • A Windows PowerShell-modul implicit módon történő importálása a parancs-felderítéssel, az elérési út vagy az automatikus betöltés segítségével.Implicitly by importing a Windows PowerShell module by module name, path, or autoloading via command discovery.

    Import-Module -Name ServerManager
    Get-AppLockerPolicy -Local
    

    Ha még nincs betöltve, a futtatásakor az AppLocker modul automatikus betöltése történik Get-AppLockerPolicy .If not already loaded, the AppLocker module is autoloaded when you run Get-AppLockerPolicy.

A Windows PowerShell kompatibilitási blokkolja a WindowsPowerShellCompatibilityModuleDenyList PowerShell-konfigurációs fájl beállításában felsorolt modulok betöltését.Windows PowerShell Compatibility blocks loading of modules that are listed in the WindowsPowerShellCompatibilityModuleDenyList setting in PowerShell configuration file.

A beállítás alapértelmezett értéke a következő:The default value of this setting is:

"WindowsPowerShellCompatibilityModuleDenyList":  [
   "PSScheduledJob","BestPractices","UpdateServices"
]

Az implicit modul betöltésének kezeléseManaging implicit module loading

A Windows PowerShell kompatibilitási funkciójának implicit importálási viselkedésének letiltásához használja a DisableImplicitWinCompat PowerShell konfigurációs fájljának beállításait.To disable implicit import behavior of the Windows PowerShell Compatibility feature, use the DisableImplicitWinCompat setting in a PowerShell configuration file. Ez a beállítás a powershell.config.json fájlhoz adható.This setting can be added to the powershell.config.json file. További információ: about_powershell_config.For more information, see about_powershell_config.

Ebből a példából megtudhatja, hogyan hozhat létre olyan konfigurációs fájlt, amely letiltja a Windows PowerShell-kompatibilitás implicit modul betöltési funkcióját.This example shows how to create a configuration file that disables the implicit module-loading feature of Windows PowerShell Compatibility.

$ConfigPath = "$PSHOME\DisableWinCompat.powershell.config.json"
$ConfigJSON = ConvertTo-Json -InputObject @{
  "DisableImplicitWinCompat" = $true
  "Microsoft.PowerShell:ExecutionPolicy" = "RemoteSigned"
}
$ConfigJSON | Out-File -Force $ConfigPath
pwsh -settingsFile $ConfigPath

A modulok kompatibilitásával kapcsolatos legfrissebb információk a PowerShell 7 modul kompatibilitási listája című részben olvashatók.For more the latest information about module compatibility, see the PowerShell 7 module compatibility list.

A parancsmag Clobbering kezeléseManaging cmdlet clobbering

A Windows PowerShell kompatibilitási funkciója implicit távelérést használ a modulok kompatibilitási módban való betöltéséhez.The Windows PowerShell Compatibility feature uses implicit remoting to load modules in compatibility mode. Ennek eredményeképpen a modul által exportált parancsok elsőbbséget élveznek az aktuális PowerShell 7-munkamenetben azonos nevű parancsokkal szemben.The result is that commands exported by the module take precedence over commands of the same name in the current PowerShell 7 session. A PowerShell 7.0.0 kiadásában a PowerShell-lel rendelkező alapmodulok szerepelnek.In the PowerShell 7.0.0 release, this included the core modules that ship with PowerShell.

A PowerShell 7,1-ben a működés módosult, így a következő alapvető PowerShell-modulok nem clobbered el:In PowerShell 7.1, the behavior was changed so that the following core PowerShell modules are not clobbered:

  • Microsoft. PowerShell. ConsoleHostMicrosoft.PowerShell.ConsoleHost
  • Microsoft. PowerShell. DiagnosticsMicrosoft.PowerShell.Diagnostics
  • Microsoft. PowerShell. HostMicrosoft.PowerShell.Host
  • Microsoft. PowerShell. ManagementMicrosoft.PowerShell.Management
  • Microsoft. PowerShell. SecurityMicrosoft.PowerShell.Security
  • Microsoft.PowerShell.UtilityMicrosoft.PowerShell.Utility
  • Microsoft. WSMan. ManagementMicrosoft.WSMan.Management

A PowerShell 7,1 olyan további modulok listázására is lehetőséget ad, amelyeknek nem szabad kompatibilitási módban clobbered.PowerShell 7.1 also added the ability to list additional modules that should not be clobbered by compatibility mode.

A WindowsPowerShellCompatibilityNoClobberModuleList beállítást a PowerShell konfigurációs fájljához adhatja hozzá.You can add the WindowsPowerShellCompatibilityNoClobberModuleList setting to PowerShell configuration file. A beállítás értéke a modulok neveinek vesszővel tagolt listája.The value of this setting is a comma-separated list of module names. A beállítás alapértelmezett értéke a következő:The default value of this setting is:

"WindowsPowerShellCompatibilityNoClobberModuleList": [ ]

KorlátozásokLimitations

A Windows PowerShell kompatibilitási funkciója:The Windows PowerShell Compatibility functionality:

  1. Csak helyileg működik Windows rendszerű számítógépekenOnly works locally on Windows computers
  2. Ehhez a Windows PowerShell 5,1Requires that Windows PowerShell 5.1
  3. Szerializált parancsmag-paraméterekkel és visszatérési értékekkel működik, nem élő objektumokonOperates on serialized cmdlet parameters and return values, not on live objects
  4. A Windows PowerShell távelérési munkamenetbe importált összes modul ugyanazzal a RunSpace van megosztva.All modules imported into the Windows PowerShell remoting session share the same runspace.

KulcsszavakKeywords

about_Windows_PowerShell_Compatibilityabout_Windows_PowerShell_Compatibility

Lásd mégSee also

about_Modulesabout_Modules

Importálás – modulImport-Module