Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
PowerShell strävar efter att tillhandahålla funktionsparitet på alla plattformar som stöds. Vissa funktioner fungerar dock annorlunda eller är inte tillgängliga på grund av skillnader i .NET Core och plattformsspecifika skillnader. Andra ändringar har gjorts för att förbättra driftskompatibiliteten för PowerShell på plattformar som inte är Windows.
.NET Framework jämfört med .NET Core
PowerShell i Linux och macOS använder .NET Core, en delmängd av det fullständiga .NET Framework i Microsoft Windows. Därför kanske skript som körs på Windows inte körs på plattformar som inte är Windows på grund av skillnaderna i ramverken.
Mer information om brytande ändringar i .NET Core för migrering från .NET Framework till .NET Core finns i .
Allmänna unix-samverkansändringar
- Stöd har lagts till för inbyggt kommandobläddring på Unix-plattformar. Det innebär att du kan använda jokertecken med inbyggda kommandon som
ls *.txt. - Funktionen
morerespekterar Linux-$PAGERoch standardinställningen ärless. - Avslutande omvänt snedstreck är automatiskt undantagna när du hanterar interna kommandoargument.
- ConsoleHost har åtgärdats för att respektera
NoEchopå Unix-plattformar. - Lägg inte till
PATHEXTmiljövariabel i Unix. - En
powershellman-sida ingår i paketet.
Körningspolicy
PowerShell ignorerar körningsprinciper när de körs på plattformar som inte är Windows-plattformar.
Get-ExecutionPolicy returnerar Obegränsad på Linux och macOS.
Set-ExecutionPolicy gör ingenting på Linux och macOS.
Skiftlägeskänslighet i PowerShell
Tidigare har PowerShell varit enhetligt skiftlägesokänsligt, med få undantag. På Unix-liknande operativsystem är filsystemet främst skiftlägeskänsligt och PowerShell följer filsystemets standard.
- Du måste använda rätt fall när ett filnamn i anges i PowerShell.
- Om ett skript försöker läsa in en modul och modulnamnet inte har rätt aktivering av versaler och gemener, kommer modulbelastningen att misslyckas. Det här beteendet kan orsaka problem med befintliga skript om namnet som refereras av modulen inte matchar rätt fall för det faktiska filnamnet.
- Även om namn i filsystemet är skiftlägeskänsliga, är automatisk komplettering av filnamn med tab-tangenten inte skiftlägeskänslig. Tab-completion går igenom listan med namn genom skiftlägesokänslig matchning.
-
Get-Helpstöder skiftlägesokänslig mönstermatchning på Unix-plattformar. -
Import-Moduleär skiftlägesokänsligt när det används med ett filnamn för att fastställa modulnamnet.
Filsystemstöd för Linux och macOS
- Sökvägar som ges till cmdletar är nu snedstrecksagnostiska (både
/och\fungerar som katalogavgränsare) - XDG Base Directory-specifikationen respekteras nu och används som standard:
- Sökvägen för Linux/macOS-profilen finns på
~/.config/powershell/profile.ps1 - Sökvägen för att spara historik finns på
~/.local/share/powershell/PSReadLine/ConsoleHost_history.txt - Sökvägen till användarmodulen finns på
~/.local/share/powershell/Modules
- Sökvägen för Linux/macOS-profilen finns på
- Stöd för fil- och mappnamn som innehåller kolontecknet på Unix.
- Stöd för skriptnamn eller fullständiga sökvägar som har kommatecken.
- Identifiera när parametern LiteralPath används för att stänga av wildcard-expansion för navigerings-cmdlets.
- Uppdaterade
Get-ChildItemså att det fungerar mer som de inbyggda kommandona i *nixls -Roch WindowsDIR /S.Get-ChildItemreturnerar nu de symboliska länkar som påträffas under en rekursiv sökning och söker inte i katalogerna som länkarna riktar in sig på.
.PS1-filnamnstillägg
PowerShell-skript måste sluta i .ps1 för att tolken ska förstå hur man läser in och kör dem i den aktuella processen. Att köra skript i den aktuella processen är det förväntade vanliga beteendet för PowerShell. Du kan lägga till det #! magiska numret i ett skript som inte har ett .ps1 tillägg, men detta gör att skriptet körs i en ny PowerShell-instans, vilket hindrar skriptet från att fungera korrekt när objekt ändras. Det här beteendet kan vara önskvärt när du kör ett PowerShell-skript från Bash eller ett annat gränssnitt.
Bekvämlighetsaliaser har tagits bort
PowerShell tillhandahåller en uppsättning alias i Windows som mappar till Linux-kommandonamn för att underlätta för användarna. I Linux och macOS har "bekvämlighetsalias" för de grundläggande kommandona ls, cp, mv, rm, cat, man, mountoch ps tagits bort så att den inbyggda körbara filen kan köras utan att ange en sökväg.
Loggning / Skogsavverkning
På macOS använder PowerShell inbyggda os_log API:er för att logga in på Apples enhetliga loggningssystem.
I Linux använder PowerShell Syslog, en allestädes närvarande loggningslösning.
Jobbkontroll
Det finns inget stöd för jobbkontroll i Unix-stil i PowerShell på Linux eller macOS. Kommandona fg och bg är inte tillgängliga. Du kan dock använda PowerShell-jobb som fungerar på alla plattformar.
Om & placeras i slutet av en pipeline körs pipelinen som ett PowerShell-jobb. När en pipeline placeras i bakgrunden returneras ett jobbobjekt. När pipelinen körs som ett jobb kan alla *-Job cmdletar användas för att hantera jobbet. Variabler (ignorerar processspecifika variabler) som används i pipelinen kopieras automatiskt till jobbet så Copy-Item $foo $bar & fungerar bara. Jobbet körs i den aktuella katalogen i stället för användarens hemkatalog.
Stöd för fjärrkommunikation
PowerShell-fjärrkommunikation (PSRP) med WinRM på Unix-plattformar kräver NTLM/Negotiate eller Basic Auth via HTTPS. PSRP på macOS stöder endast Grundläggande autentisering via HTTPS. Kerberos-baserad autentisering stöds inte.
PowerShell stöder PowerShell-fjärrkommunikation (PSRP) via SSH på alla plattformar (Windows, Linux och macOS). Mer information finns i SSH-fjärrkommunikation i PowerShell.
Stöd för Just-Enough-Administration (JEA)
På PowerShell på Linux eller macOS kan du inte skapa fjärrendpunkter för begränsad administration (JEA).
sudo, execoch PowerShell
Eftersom PowerShell kör de flesta kommandon i minnet (t.ex. Python eller Ruby) kan du inte använda sudo direkt med inbyggda PowerShell-kommandon. Du kan köra pwsh från sudo. Om det är nödvändigt att köra en PowerShell-cmdlet inifrån PowerShell med sudo, till exempel sudo Set-Date 8/18/2016, använder du sudo pwsh Set-Date 8/18/2016.
Moduler som ingår på plattformar som inte är Windows-plattformar
För icke-Windows-plattformar innehåller PowerShell följande moduler:
- Microsoft.PowerShell.Archive
- Microsoft.PowerShell.Core
- Microsoft.PowerShell.Host
- Microsoft.PowerShell.Management
- Microsoft.PowerShell.Security
- Microsoft.PowerShell.Utility
- PackageManagement
- PowerShellGet
- PSReadLine
- Trådjobb
Ett stort antal kommandon (cmdletar) som är allmänt tillgängliga i PowerShell är inte tillgängliga i Linux eller macOS. Dessa kommandon gäller ofta inte för dessa plattformar. Kommandon för Windows-specifika funktioner som registret eller tjänsterna är till exempel inte tillgängliga. Andra kommandon, till exempel Set-ExecutionPolicy, finns men fungerar inte.
En omfattande lista över moduler och cmdletar och de plattformar som de stöder finns i Versionshistorik för moduler och cmdletar.
Moduler som inte längre levereras med PowerShell
Av olika kompatibilitetsskäl ingår inte längre följande moduler i PowerShell.
- ISE
- Microsoft.PowerShell.LocalAccounts
- Microsoft.PowerShell.ODataUtils
- Microsoft.PowerShell.Operation.Validation
- PSScheduledJob
- PSWorkflow
- PSWorkflowUtility
Följande Windows-specifika moduler ingår inte i PowerShell för Linux eller macOS.
- CimCmdlets
- Microsoft.PowerShell.Diagnostics
- Microsoft.WSMan.Management
- PSDiagnostics
Cmdletar är inte tillgängliga på plattformar som inte är Windows-plattformar
Vissa cmdletar har tagits bort från PowerShell. Andra är inte tillgängliga eller fungerar på olika sätt på plattformar som inte är Windows. En omfattande lista över cmdletar som tagits bort från PowerShell finns i cmdletar som tagits bort från PowerShell.
Microsoft.PowerShell.Core
Följande cmdletar är inte tillgängliga i Linux eller macOS:
Disable-PSRemotingEnable-PSRemotingConnect-PSSessionDisconnect-PSSessionReceive-PSSessionGet-PSSessionCapabilityDisable-PSSessionConfigurationEnable-PSSessionConfigurationGet-PSSessionConfigurationRegister-PSSessionConfigurationSet-PSSessionConfigurationUnregister-PSSessionConfigurationTest-PSSessionConfigurationFile
Parametern ShowWindow för Get-Help är inte tillgänglig för plattformar som inte är Windows-plattformar. PowerShell 7.3 lade till cmdleten Switch-Process och funktionen exec för Linux och macOS. Dessa kommandon är inte tillgängliga i Windows.
Microsoft.PowerShell.Security cmdlets
Följande cmdletar är inte tillgängliga i Linux eller macOS:
Get-AclSet-AclGet-AuthenticodeSignatureSet-AuthenticodeSignatureNew-FileCatalogTest-FileCatalog
Dessa cmdletar är bara tillgängliga från och med PowerShell 7.1.
Get-CmsMessageProtect-CmsMessageUnprotect-CmsMessage
Microsoft.PowerShell.Management cmdlets
Följande cmdletar är inte tillgängliga i Linux och macOS:
Rename-ComputerGet-ComputerInfoGet-HotFixClear-RecycleBinGet-ServiceNew-ServiceRemove-ServiceRestart-ServiceResume-ServiceSet-ServiceStart-ServiceStop-ServiceSuspend-ServiceSet-TimeZone
Följande cmdletar är tillgängliga med begränsningar:
-
Get-Clipboard– finns i PowerShell 7.0+ -
Set-Clipboard– finns i PowerShell 7.0+ -
Restart-Computer– tillgängligt för Linux och macOS i PowerShell 7.1+ -
Stop-Computer– tillgängligt för Linux och macOS i PowerShell 7.1+
Microsoft.PowerShell.Utility-cmdlet:ar
Följande cmdletar är inte tillgängliga i Linux och macOS:
Convert-StringConvertFrom-StringConvertFrom-SddlStringOut-GridViewOut-PrinterShow-Command
Alias är inte tillgängliga i Linux eller macOS
I följande tabell visas de alias som är tillgängliga för Windows som inte är tillgängliga på plattformar som inte är Windows-plattformar. Dessa alias är inte tillgängliga eftersom aliaset står i konflikt med ett internt kommando på dessa plattformar.
| Smeknamn | Cmdlet |
|---|---|
ac |
Add-Content |
cat |
Get-Content |
clear |
Clear-Host |
compare |
Compare-Object |
cp |
Copy-Item |
cpp |
Copy-ItemProperty |
diff |
Compare-Object |
kill |
Stop-Process |
ls |
Get-ChildItem |
man |
help |
mount |
New-PSDrive |
mv |
Move-Item |
ps |
Get-Process |
rm |
Remove-Item |
rmdir |
Remove-Item |
sleep |
Start-Sleep |
sort |
Sort-Object |
start |
Start-Process |
tee |
Tee-Object |
write |
Write-Output |
Tabellen innehåller inte alias som inte är tillgängliga för cmdletar som inte finns på andra plattformar än Windows.
PowerShell Desired State Configuration (DSC)
Från och med PowerShell 7.2 togs modulen PSDesiredStateConfiguration bort från PowerShell och publiceras i PowerShell-galleriet. Mer information finns i meddelande på PowerShell Team-bloggen. Mer information om hur du använder DSC på Linux finns i Komma igång med DSC för Linux. DSC v1.1 och v2.x stöds inte på macOS. DSC v3 stöds i Windows, Linux och macOS, men det är fortfarande i tidig utveckling.