Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Windows PowerShell 5.1 is gebouwd op het .NET Framework v4.5. Met de release van PowerShell 6.0 werd PowerShell een open source project dat is gebouwd op .NET Core 2.0. Overstappen van het .NET Framework naar .NET Core heeft PowerShell toegestaan om een platformoverschrijdende oplossing te worden. PowerShell wordt uitgevoerd op Windows, macOS en Linux.
Er zijn enkele verschillen in de PowerShell-taal tussen Windows PowerShell en PowerShell. De meest opvallende verschillen zijn de beschikbaarheid en het gedrag van PowerShell-cmdlets tussen Windows en niet-Windows platforms en de wijzigingen die voortvloeien uit de verschillen tussen het .NET Framework en .NET Core.
Dit artikel bevat een overzicht van de belangrijke verschillen en belangrijke wijzigingen tussen Windows PowerShell en de huidige versie van PowerShell. Deze samenvatting bevat geen nieuwe functies of cmdlets die zijn toegevoegd. In dit artikel wordt ook niet besproken wat er is gewijzigd tussen versies. Het doel van dit artikel is om de huidige status van PowerShell te presenteren en hoe dit verschilt van Windows PowerShell. Zie de artikelen Wat is er nieuw voor elke versie voor een gedetailleerde bespreking van wijzigingen tussen versies en het toevoegen van nieuwe functies.
- Wat is er nieuw in PowerShell 7.5?
- Wat is er nieuw in PowerShell 7.4?
- Wat is er nieuw in PowerShell 7.3?
- Wat is er nieuw in PowerShell 7.2?
- Wat is er nieuw in PowerShell 7.1?
- Wat is er nieuw in PowerShell 7.0?
- Wat is er nieuw in PowerShell 6.x?
.NET Framework versus .NET Core
PowerShell in Linux en macOS maakt gebruik van .NET kern, een subset van het volledige .NET Framework op Microsoft Windows. Dit is belangrijk omdat PowerShell directe toegang biedt tot de onderliggende frameworktypen en -methoden. Als gevolg hiervan kunnen scripts die worden uitgevoerd op Windows niet worden uitgevoerd op niet-Windows platforms vanwege de verschillen in de frameworks. Zie Verbrekingswijzigingen voor migratie van .NET Framework naar .NET Core voor meer informatie over wijzigingen in .NET Core.
Elke nieuwe versie van PowerShell is gebaseerd op een nieuwere versie van .NET. Er kunnen breaking changes in .NET zijn die van invloed zijn op PowerShell.
- PowerShell 7.6 - Gebouwd op .NET 10.0 (LTS)
- PowerShell 7.5 - Gebouwd op .NET 9.0
- PowerShell 7.4 - Gebouwd op .NET 8.0 (LTS)
- PowerShell 7.3 - Gebouwd op .NET 7.0
- PowerShell 7.2 - Gebouwd op .NET 6.0 (LTS)
- PowerShell 7.1 - Gebouwd op .NET 5.0
- PowerShell 7.0 - gebouwd op .NET Core 3.1 (LTS)
- PowerShell 6.2 - Gebouwd op .NET Core 2.1
- PowerShell 6.1 - Gebouwd op .NET Core 2.1
- PowerShell 6.0 - gebouwd op .NET Core 2.0
Met de komst van .NET Standard 2.0 kan PowerShell veel traditionele Windows PowerShell-modules laden zonder aanpassingen. Daarnaast bevat PowerShell 7 een Windows PowerShell-compatibiliteitsfunctie waarmee u Windows PowerShell-modules kunt gebruiken waarvoor nog steeds het volledige framework is vereist.
Zie voor meer informatie:
Houd rekening met wijzigingen in .NET methode
Hoewel .NET methodewijzigingen niet specifiek zijn voor PowerShell, kunnen ze van invloed zijn op uw scripts, met name als u .NET methoden rechtstreeks aanroept. Er kunnen ook nieuwe overbelastingen zijn voor constructors. Dit kan invloed hebben op de manier waarop u objecten maakt met behulp van New-Object of de [type]::new() methode.
Bijvoorbeeld, .NET heeft overloads toegevoegd aan de methode [System.String]::Split() die niet beschikbaar zijn in .NET Framework 4.5. De volgende lijst bevat de overbelastingen voor de methode Split() die beschikbaar is in Windows PowerShell 5.1:
PS> "".Split
OverloadDefinitions
-------------------
string[] Split(Params char[] separator)
string[] Split(char[] separator, int count)
string[] Split(char[] separator, System.StringSplitOptions options)
string[] Split(char[] separator, int count, System.StringSplitOptions options)
string[] Split(string[] separator, System.StringSplitOptions options)
string[] Split(string[] separator, int count, System.StringSplitOptions options)
De volgende lijst bevat de overbelastingen voor de Split() methode die beschikbaar is in PowerShell 7:
"".Split
OverloadDefinitions
-------------------
string[] Split(char separator, System.StringSplitOptions options)
string[] Split(char separator, int count, System.StringSplitOptions options)
string[] Split(Params char[] separator)
string[] Split(char[] separator, int count)
string[] Split(char[] separator, System.StringSplitOptions options)
string[] Split(char[] separator, int count, System.StringSplitOptions options)
string[] Split(string separator, System.StringSplitOptions options)
string[] Split(string separator, int count, System.StringSplitOptions options)
string[] Split(string[] separator, System.StringSplitOptions options)
string[] Split(string[] separator, int count, System.StringSplitOptions options)
In Windows PowerShell 5.1 kunt u een tekenmatrix (char[]) doorgeven aan de methode Split() als een string. De methode splitst de doeltekenreeks bij elke voorkoming van een teken in de array. Met de volgende opdracht wordt de doeltekenreeks gesplitst in Windows PowerShell 5.1, maar niet in PowerShell 7:
# PowerShell 7 example
"1111p2222q3333".Split('pq')
1111p2222q3333
Als u wilt binden aan de juiste overbelasting, moet u de tekenreeks naar een tekenmatrix typen:
# PowerShell 7 example
"1111p2222q3333".Split([char[]]'pq')
1111
2222
3333
Modules worden niet meer geleverd met PowerShell
Om verschillende compatibiliteitsredenen zijn de volgende modules niet meer opgenomen in PowerShell.
- ISE
- Microsoft.PowerShell.LocalAccounts
- Microsoft.PowerShell.ODataUtils
- Microsoft.PowerShell.Operation.Validation
- PSScheduledJob
- PSWorkflow
- PSWorkflowUtility
PowerShell-werkstroom
PowerShell Workflow is een functie in Windows PowerShell die is gebaseerd op Windows Workflow Foundation (WF) waarmee robuuste runbooks kunnen worden gemaakt voor langlopende of geparallelliseerde taken.
Vanwege het gebrek aan ondersteuning voor Windows Workflow Foundation in .NET Core hebben we PowerShell Workflow uit PowerShell verwijderd.
In de toekomst willen we systeemeigen parallellisme/gelijktijdigheid inschakelen in de PowerShell-taal zonder dat PowerShell Workflow nodig is.
Als er controlepunten moeten worden gebruikt om een script te hervatten nadat het besturingssysteem opnieuw is opgestart, raden we u aan taakplanner te gebruiken om een script uit te voeren bij het opstarten van het besturingssysteem, maar het script moet een eigen status behouden (zoals het behouden van het script naar een bestand).
Cmdlets verwijderd uit PowerShell
Voor de modules die zijn opgenomen in PowerShell, zijn de volgende cmdlets uit PowerShell verwijderd om verschillende compatibiliteitsredenen of het gebruik van niet-ondersteunde API's.
CimCmdlets
Export-BinaryMiLog
Microsoft.PowerShell.Core
Add-PSSnapinExport-ConsoleGet-PSSnapinRemove-PSSnapinResume-JobSuspend-Job
Microsoft.PowerShell.Diagnostics
Export-CounterImport-Counter
Microsoft.PowerShell.Management
Add-ComputerCheckpoint-ComputerClear-EventLogComplete-TransactionDisable-ComputerRestoreEnable-ComputerRestoreGet-ComputerRestorePointGet-ControlPanelItemGet-EventLogGet-TransactionGet-WmiObjectInvoke-WmiMethodLimit-EventLogNew-EventLogNew-WebServiceProxyRegister-WmiEventRemove-ComputerRemove-EventLogRemove-WmiObjectReset-ComputerMachinePasswordRestore-ComputerSet-WmiInstanceShow-ControlPanelItemShow-EventLogStart-TransactionTest-ComputerSecureChannelUndo-TransactionUse-TransactionWrite-EventLog
Microsoft.PowerShell.Utility
Convert-StringConvertFrom-String
PSDesiredStateConfiguration
Disable-DscDebugEnable-DscDebugGet-DscConfigurationGet-DscConfigurationStatusGet-DscLocalConfigurationManagerPublish-DscConfigurationRemove-DscConfigurationDocumentRestore-DscConfigurationSet-DscLocalConfigurationManagerStart-DscConfigurationStop-DscConfigurationTest-DscConfigurationUpdate-DscConfiguration
WMI v1 cmdlets
De volgende WMI v1-cmdlets zijn verwijderd uit PowerShell:
Register-WmiEventSet-WmiInstanceInvoke-WmiMethodGet-WmiObjectRemove-WmiObject
De CimCmdlets-module -cmdlets (ook wel WMI v2 genoemd) voeren dezelfde functie uit en bieden nieuwe functionaliteit en een opnieuw ontworpen syntaxis.
New-WebServiceProxy cmdlet verwijderd
.NET Core biedt geen ondersteuning voor het Windows Communication Framework, dat services biedt voor het gebruik van het SOAP-protocol. Deze cmdlet is verwijderd omdat SOAP is vereist.
*-Transaction cmdlets verwijderd
Deze cmdlets hadden een zeer beperkt gebruik. De beslissing werd genomen om de steun voor hen te stoppen.
Complete-TransactionGet-TransactionStart-TransactionUndo-TransactionUse-Transaction
*-EventLog Cmdlets
Vanwege het gebruik van niet-ondersteunde API's zijn de *-EventLog cmdlets verwijderd uit PowerShell.
Get-WinEvent en New-WinEvent zijn beschikbaar voor het ophalen en maken van gebeurtenissen op Windows.
Cmdlets die gebruikmaken van het Windows Presentation Framework (WPF)
.NET Core 3.1 ondersteuning toegevoegd voor WPF, zodat de release van PowerShell 7.0 de volgende Windows-specifieke functies heeft hersteld:
- De
Show-Commandcmdlet - De
Out-GridViewcmdlet - De parameter ShowWindow van
Get-Help
PowerShell Desired State Configuration (DSC)-wijzigingen
Invoke-DscResource werd hersteld als een experimentele functie in PowerShell 7.0.
Vanaf PowerShell 7.2 is de PSDesiredStateConfiguration-module verwijderd uit PowerShell en gepubliceerd naar de PowerShell Gallery. Zie de aankondiging in de PowerShell Team-blog voor meer informatie.
Uitvoerbare PowerShell-wijzigingen
Naam van powershell.exe gewijzigd in pwsh.exe
De binaire naam voor PowerShell is gewijzigd van powershell(.exe) in pwsh(.exe). Deze wijziging biedt een deterministische manier voor gebruikers om PowerShell uit te voeren op computers en ondersteuning te bieden voor side-by-side installaties van Windows PowerShell en PowerShell.
Aanvullende wijzigingen aanpwsh(.exe) vanpowershell.exe
- De eerste positionele parameter veranderd van
-Commandnaar-File. Met deze wijziging wordt het gebruik van#!(ook wel shebang genoemd) in PowerShell-scripts opgelost die worden uitgevoerd vanuit niet-PowerShell-shells op niet-Windows platforms. Het betekent ook dat je commando's kunt uitvoeren zoalspwsh foo.ps1ofpwsh fooScriptzonder te specificeren-File. Deze wijziging vereist echter dat je expliciet-cof-Commandspecificeert wanneer je probeert commando's zoalspwsh.exe -Command Get-Commanduit te voeren. -
pwshaccepteert de-ischakeloptie (of-Interactive) om een interactieve shell aan te geven. Hierdoor kan PowerShell worden gebruikt als een standaardshell op Unix-platforms. - Parameters
-ImportSystemModulesverwijderd en-PSConsoleFileuitpwsh.exe. - Gewijzigde
pwsh -Versionen ingebouwde hulp voorpwsh.exeom af te stemmen op andere native tools. - Ongeldige argumentfoutberichten voor
-Fileen-Commanden exitcodes die in overeenstemming zijn met Unix-standaarden. - Parameter
-WindowStyletoegevoegd aan Windows. Op vergelijkbare wijze zijn pakketgebonden installatie-updates op niet-Windows platformen actualisaties ter plaatse.
De verkorte naam is ook consistent met het benoemen van shells op niet-Windows platforms.
Ondersteuning voor het uitvoeren van een PowerShell-script met boolparameter
Voorheen bood het gebruiken van pwsh.exe om een PowerShell-script uit te voeren geen mogelijkheid om -File$true/ als parameterwaarden door te geven. Ondersteuning voor $true/$false als geparseerde waarden aan parameters werd toegevoegd. Schakelwaarden worden ook ondersteund.
Verbeterde compatibiliteit met eerdere versies met Windows PowerShell
Voor Windows wordt een nieuwe [switch] parameter UseWindowsPowerShell toegevoegd aan Import-Module. Met deze parameter maakt u een proxymodule in PowerShell 7 die gebruikmaakt van een lokaal Windows PowerShell-proces om impliciet cmdlets uit te voeren die in die module zijn opgenomen. Zie Import-Modulevoor meer informatie.
Zie de Modulecompatibiliteitstabel voor meer informatie over welke Microsoft modules werken met PowerShell 7.0.
Microsoft Update-ondersteuning voor Windows
PowerShell 7.2 heeft ondersteuning toegevoegd voor Microsoft Update. Wanneer u deze functie inschakelt, krijgt u de nieuwste PowerShell 7-updates in uw traditionele Windows Update (WU)-beheerstroom, ongeacht of dat met Windows Update voor Bedrijven, WSUS, SCCM of het interactieve WU-dialoogvenster in Instellingen is.
Het PowerShell 7.2 MSI-pakket bevat de volgende commandoregelopties:
-
USE_MU- Deze eigenschap heeft twee mogelijke waarden:-
1(standaard): kiest u voor het bijwerken via Microsoft update of WSUS -
0- Meld u niet aan om bij te werken via Microsoft Update of WSUS
-
ENABLE_MU-
1(standaard) - Kiest ervoor om Microsoft Update, Automatische updates of Windows Update te gebruiken -
0- Kiest niet voor het gebruik van Microsoft Update, de Automatische Updates of Windows Update.
-
Enginewijzigingen
Ondersteuning voor PowerShell als standaard Unix-shell
Op Unix is het een conventie voor shells om -i te accepteren voor een interactieve shell, en veel hulpprogramma's verwachten dit gedrag (script bijvoorbeeld, en wanneer PowerShell als de standaardshell wordt ingesteld) en roept de shell aan met de -i-switch. Deze wijziging is een inbraak die -i voorheen als korte hand kon worden gebruikt om te matchen -InputFormat, wat nu moet worden -in.
Aangepaste snap-ins
PowerShell snap-ins zijn de voorlopers van PowerShell-modules die geen wijdverbreide acceptatie hebben in de PowerShell-community.
Vanwege de complexiteit van het ondersteunen van modules en hun gebrek aan gebruik in de community, ondersteunen we geen aangepaste modules meer in PowerShell.
Experimentele functievlagmen
PowerShell 6.2 heeft ondersteuning ingeschakeld voor Experimental Features. Hierdoor kunnen PowerShell-ontwikkelaars nieuwe functies leveren en feedback krijgen voordat het ontwerp is voltooid. Op deze manier vermijden we wijzigingen die fouten veroorzaken naarmate het ontwerp zich ontwikkelt.
Gebruik Get-ExperimentalFeature om een lijst te krijgen van beschikbare experimentele functies. Je kunt deze functies in- of uitschakelen met Enable-ExperimentalFeature en Disable-ExperimentalFeature.
Assembly laden vanuit het basispad van de module voordat u probeert te laden vanuit de GAC
Voorheen, wanneer een binaire module de module-assembly in de GAC had, laadden we de assembly van de GAC voordat we probeerden het vanuit het basispad van de module te laden.
Controle op null-elementen overslaan voor collecties met een waarde-type element
Voor de Mandatory parameter en ValidateNotNull en attributen ValidateNotNullOrEmpty sla je de null-element check over als het elementtype van de collectie waardetype is.
Behouden $? voor ParenExpression, SubExpression en ArrayExpression
Deze pull request wijzigt de manier waarop we subpipelines (...), subexpressies $(...) en array-uitdrukkingen @() compileren, zodat $? niet automatisch waar is. In plaats daarvan is de waarde van $? afhankelijk van het resultaat van de pijplijn of van de instructies die worden uitgevoerd.
Los $? op om niet $false te zijn wanneer native opdrachten naar stderr schrijven.
$? is niet ingesteld op $false wanneer systeemeigen opdrachten worden geschreven naar stderr. Het is gebruikelijk dat ingebouwde opdrachten naar stderr schrijven zonder daarmee een fout aan te geven.
$? is alleen ingesteld op $false wanneer de systeemeigen opdracht een afsluitcode zonder nul heeft.
$ErrorActionPreference mag de uitvoer van stderr niet beïnvloeden van systeemeigen opdrachten
Het is gebruikelijk dat ingebouwde opdrachten naar stderr schrijven zonder daarmee een fout aan te geven. Met deze wijziging stderr wordt de output nog steeds vastgelegd in ErrorRecord-objecten , maar de runtime is niet langer van toepassing $ErrorActionPreference als de ErrorRecord afkomstig is van een native commando.
Wijzig $OutputEncoding om UTF-8 NoBOM codering te gebruiken in plaats van ASCII
De vorige codering, ASCII (7-bits), zou in sommige gevallen leiden tot een onjuiste wijziging van de uitvoer. Als UTF-8 NoBOM u de standaardinstelling maakt, blijft Unicode-uitvoer behouden met een codering die wordt ondersteund door de meeste hulpprogramma's en besturingssystemen.
Cmdlets samenvoegen met parameter -Encoding die van het type moeten zijn System.Text.Encoding
De -Encoding waarde Byte is verwijderd uit de cmdlets van de bestandssysteemprovider. Een nieuwe parameter, -AsByteStream, wordt nu gebruikt om aan te geven dat een bytestroom als invoer nodig is of dat de uitvoer een stroom van bytes is.
New-ModuleManifest-codering wijzigen in UTF8NoBOM op niet-Windows platforms
New-ModuleManifest Voorheen creëerde psd1 manifesten in UTF-16 met BOM, waardoor er een probleem ontstaat voor Linux-hulpprogramma's. Deze belangrijke wijziging wijzigt de codering van New-ModuleManifest naar UTF (geen BOM) in niet-Windows-platformen.
Verwijderen AllScope uit de meeste standaardaliassen
Om het maken van scopes te versnellen, werd AllScope uit de meeste standaard aliassen verwijderd.
AllScope was achtergelaten voor een paar veelgebruikte aliassen waar het opzoeken sneller was.
-Verbose en -Debug overschrijven $ErrorActionPreference niet langer
Voorheen, als -Verbose of -Debug gespecificeerd waren, oversteeg het het gedrag van $ErrorActionPreference. Met deze verandering, -Verbose en -Debug het gedrag van $ErrorActionPreferenceniet langer beïnvloeden.
Bovendien wordt de -Debug parameter ingesteld $DebugPreference op Doorgaan in plaats van Inquire.
Zorg dat $PSCulture consistent de cultuurveranderingen binnen de sessie weerspiegelt.
In Windows PowerShell wordt de huidige cultuurwaarde in de cache opgeslagen, waardoor deze mogelijk niet meer overeenkomt met de cultuur als deze na het opstarten van de sessie wordt gewijzigd. Dit cachegedrag is opgelost in de PowerShell-kern.
Sta een expliciet gespecificeerde benoemde parameter toe om dezelfde parameter met hashtable-splatting te overschrijven.
Met deze wijziging worden de benoemde parameters van splatting verplaatst naar het einde van de parameterlijst, zodat ze gebonden zijn nadat alle expliciet opgegeven benoemde parameters zijn gebonden. Parameterbinding voor eenvoudige functies genereert geen fout wanneer een opgegeven benoemde parameter niet kan worden gevonden. Onbekende benoemde parameters zijn gebonden aan de $args parameter van de eenvoudige functie. Het verplaatsen van splatting naar het einde van de argumentlijst verandert de volgorde waarin de parameters verschijnen $args.
Voorbeeld:
function SimpleTest {
param(
$Name,
$Path
)
"Name: $Name; Path: $Path; Args: $args"
}
In het vorige gedrag is MyPath niet gebonden aan -Path omdat het het derde argument in de argumentenlijst is. ## Dus het wordt uiteindelijk in '$args' gestopt samen met Blah = "World"
PS> $hash = @{ Name = "Hello"; Blah = "World" }
PS> SimpleTest @hash "MyPath"
Name: Hello; Path: ; Args: -Blah: World MyPath
Met deze wijziging worden de argumenten van @hash naar het einde van de argumentenlijst verplaatst.
MyPath wordt het eerste argument in de lijst, dus het is gebonden aan -Path.
PS> SimpleTest @hash "MyPath"
Name: Hello; Path: MyPath; Args: -Blah: World
Taalwijzigingen
Operator null-coalescing ??
De null-coalescing operator ?? retourneert de waarde van zijn linkeroperand als deze niet null is.
Anders wordt de rechteroperand geëvalueerd en wordt het resultaat ervan geretourneerd. De ??-operator evalueert de rechteroperand niet als de linkeroperand niet-null is.
$x = $null
$x ?? 100
100
In het volgende voorbeeld wordt de rechteroperand niet geëvalueerd.
[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020
Toewijzingsoperator null-coalescing ??=
De toewijzingsoperator null-coalescing ??= wijst de waarde van de rechteroperand alleen toe aan de linkeroperand als de linkeroperand null oplevert. De ??=-operator evalueert de rechteroperand niet als de linkeroperand niet-null is.
$x = $null
$x ??= 100
$x
100
In het volgende voorbeeld wordt de rechteroperand niet geëvalueerd.
[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020
Null-voorwaardelijke operatoren
Opmerking
Deze functie is verplaatst van experimenteel naar basis in PowerShell 7.1.
Een operator met null-voorwaardelijke voorwaarden past een lidtoegang, ?.of elementtoegang, ?[]alleen toe op de operand als die operand niet-null evalueert; anders wordt null geretourneerd.
Aangezien PowerShell het mogelijk maakt dat ? deel uitmaakt van de naam van de variabele, is een formele specificatie van de variabelenaam vereist voor het gebruik van deze operators. Dus het is vereist om {} te gebruiken rond de variabelennamen zoals ${a} of wanneer ? deel uitmaakt van de variabelenaam ${a?}.
In het volgende voorbeeld wordt de waarde van PropName geretourneerd.
$a = @{ PropName = 100 }
${a}?.PropName
100
In het volgende voorbeeld wordt null geretourneerd zonder toegang te krijgen tot de lidnaam PropName.
$a = $null
${a}?.PropName
Op dezelfde manier wordt de waarde van het element geretourneerd.
$a = 1..10
${a}?[0]
1
En wanneer de operand null is, wordt het element niet geopend en wordt null geretourneerd.
$a = $null
${a}?[0]
Opmerking
De syntaxis van de variabelenaam mag ${<name>} niet worden verward met de $() operator voor subexpressie. Zie de sectie Variabelenaam van about_Variables voor meer informatie.
Operator toegevoegd & voor taakbeheer
Door aan het einde van een pipeline te plaatsen & , wordt de pipeline uitgevoerd als een PowerShell-taak. Wanneer een pijplijn op de achtergrond wordt geplaatst, wordt een taakobject geretourneerd. Zodra de pipeline als taak draait, kunnen alle standaard *-Job cmdlets worden gebruikt om de taak te beheren. Variabelen (zonder rekening te houden met processpecifieke variabelen) die in de pijplijn worden gebruikt, worden automatisch naar de taak gekopieerd en Copy-Item $foo $bar & werkt dus gewoon. De taak wordt ook uitgevoerd in de huidige map in plaats van de basismap van de gebruiker.
Nieuwe methoden/eigenschappen op PSCustomObject
We hebben nieuwe methoden en eigenschappen toegevoegd aan PSCustomObject.
PSCustomObject nu bevat een Count/Length eigenschap zoals andere objecten.
$PSCustomObject = [pscustomobject]@{foo = 1}
$PSCustomObject.Length
1
$PSCustomObject.Count
1
Dit werk omvat ook ForEach methoden Where waarmee je op PSCustomObject items kunt bedienen en filteren.
$PSCustomObject.ForEach({$_.foo + 1})
2
$PSCustomObject.Where({$_.foo -gt 0})
foo
---
1
Conversies van PSMethod naar Delegaat
U kunt een PSMethod converteren naar een delegate. Dit stelt je in staat om dingen zoals PSMethod[M]::DoubleStrLen als een delegate-waarde door te geven aan [M]::AggregateString:
class M {
static [int] DoubleStrLen([string] $value) { return 2 * $value.Length }
static [long] AggregateString([string[]] $values, [Func[string, int]] $selector) {
[long] $res = 0
foreach($s in $values){
$res += $selector.Invoke($s)
}
return $res
}
}
[M]::AggregateString((gci).Name, [M]::DoubleStrLen)
Tekenreeksvergelijkingsgedrag gewijzigd in PowerShell 7.1
PowerShell 7.1 is gebouwd op .NET 5.0, waarmee de volgende belangrijke wijziging is geïntroduceerd:
Vanaf .NET 5.0 negeren cultureel invariante tekenreeksvergelijkingen niet-printfbare besturingstekens.
Bijvoorbeeld, de volgende twee strings worden als identiek beschouwd:
# Escape sequence "`a" is Ctrl-G or [char]7
'Food' -eq "Foo`ad"
True
Nieuwe cmdlets
Nieuwe Get-Uptime cmdlet
De cmdlet Get-Uptime retourneert de tijd die is verstreken sinds de laatste keer dat het besturingssysteem is opgestart. De cmdlet is geïntroduceerd in PowerShell 6.0.
Nieuwe Remove-Alias cmdlet
De cmdlet Remove-Alias verwijdert een alias uit de huidige PowerShell-sessie. De cmdlet is geïntroduceerd in PowerShell 6.0.
Nieuwe Remove-Service cmdlet
De cmdlet Remove-Service verwijdert een Windows-service in het register en in de servicedatabase. De Remove-Service cmdlet is geïntroduceerd in PowerShell 6.0.
Nieuwe Markdown-cmdlets
Markdown is een standaard voor het creëren van leesbare documenten met basisopmaak die in HTML kan worden weergegeven.
De volgende cmdlets zijn toegevoegd in PowerShell 6.1:
- ConvertFrom-Markdown - De inhoud van een tekenreeks of bestand converteren naar een MarkdownInfo-object.
- Get-MarkdownOption : retourneert de huidige kleuren en stijlen die worden gebruikt voor het weergeven van Markdown-inhoud in de console.
- Set-MarkdownOption - Hiermee stelt u de kleuren en stijlen in die worden gebruikt voor het weergeven van Markdown-inhoud in de console.
- Show-Markdown - Geeft Markdown-inhoud weer in de console of als HTML
Nieuwe Test-Json cmdlet
De cmdlet Test-Json test of een tekenreeks een geldig JSON-document (JavaScript Object Notation) is en kan eventueel controleren of het JSON-document is gebaseerd op een opgegeven schema.
Deze cmdlet is geïntroduceerd in PowerShell 6.1
Nieuwe cmdlets ter ondersteuning van experimentele functies
De volgende cmdlets zijn toegevoegd in PowerShell 6.2 ter ondersteuning van experimentele functies.
Nieuwe Join-String cmdlet
De cmdlet Join-String combineert objecten uit de pijplijn in één tekenreeks. Deze cmdlet is toegevoegd in PowerShell 6.2.
Nieuwe weergave Beknopte weergave en cmdlet Get-Error
PowerShell 7.0 verbetert de weergave van foutberichten om de leesbaarheid van interactieve en scriptfouten te verbeteren met een nieuwe standaardweergave , Beknopte weergave. De weergaven zijn door de gebruiker selecteerbaar via de voorkeurvariabele $ErrorView.
Bij ConciseView, als een fout niet van een script- of parserfout komt, is het een foutmelding met één regel:
Get-ChildItem -Path C:\NotReal
Get-ChildItem: Can't find path 'C:\NotReal' because it doesn't exist
Als de fout optreedt tijdens het uitvoeren van een script of een parseringsfout is, retourneert PowerShell een foutbericht met meerdere regels dat de fout, een aanwijzer en een foutbericht bevat waarin wordt aangegeven waar de fout zich op die regel bevindt. Als de terminal geen ANSI-kleurescape-codes ondersteunt (VT100), worden kleuren niet weergegeven.
De standaardweergave in PowerShell 7 is ConciseView. De vorige standaardweergave was NormalView en je kunt dit selecteren door de voorkeursvariabele $ErrorViewin te stellen.
$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView
Opmerking
Een nieuwe eigenschap ErrorAccentColor is toegevoegd $Host.PrivateData om het wijzigen van de accentkleur van het foutbericht te ondersteunen.
De nieuwe Get-Errorcmdlet biedt een volledige gedetailleerde weergave van de volledig gekwalificeerde fout indien gewenst. Standaard toont de cmdlet de volledige details, inclusief interne uitzonderingen, van de laatste fout die is opgetreden.
De Get-Error cmdlet ondersteunt invoer uit de pijplijn met behulp van de ingebouwde variabele $Error.
Get-Error toont alle pijpfouten.
$Error | Get-Error
De Get-Error cmdlet ondersteunt de Latest parameter, waarmee je kunt aangeven hoeveel fouten uit de huidige sessie je wilt weergeven.
Get-Error -Newest 3 # Displays the lst three errors that occurred in the session
Zie Get-Error voor meer informatie.
Cmdlet-wijzigingen
Parallelle uitvoering toegevoegd aan ForEach-Object
Vanaf PowerShell 7.0 heeft de ForEach-Object cmdlet, die items in een verzameling herhaalt, ingebouwde parallelle verwerking met de nieuwe Parallel parameter.
Standaard gebruiken parallelle scriptblokken de huidige werkmap van de aanroeper die de parallelle taken startte.
In dit voorbeeld worden 50.000 logboekvermeldingen opgehaald uit 5 systeemlogboeken op een lokale Windows machine:
$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'
$logEntries = $logNames | ForEach-Object -Parallel {
Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5
$logEntries.Count
50000
De Parallel-parameter specificeert het scriptblok dat parallel wordt uitgevoerd voor elke invoerlognaam.
De nieuwe ThrottleLimit-parameter beperkt het aantal scriptblokken dat parallel loopt op een bepaald moment. De standaardwaarde is 5.
Gebruik de variabele $_ om het huidige invoerobject in het scriptblok te representeren. Gebruik de Using: bereikaanpassing om variabele verwijzingen door te geven naar het actieve scriptblok.
Zie ForEach-Object voor meer informatie.
Controleer system32 op compatibele ingebouwde modules op Windows
In de Windows 10 1809-update en Windows Server 2019 hebben we een aantal ingebouwde PowerShell-modules bijgewerkt om deze te markeren als compatibel met PowerShell.
Wanneer PowerShell wordt gestart, wordt $windir\System32 automatisch opgenomen als onderdeel van de PSModulePath omgevingsvariabele. Echter, het stelt modules alleen bloot aan Get-Module en Import-Module als het CompatiblePSEdition als compatibel met Corewordt gemarkeerd.
U kunt dit gedrag overschrijven om alle modules weer te geven met behulp van de -SkipEditionCheck[switch] parameter. We hebben ook een PSEdition eigenschap toegevoegd aan de tabeluitvoer.
-lp alias voor alle -LiteralPath parameters
We hebben een standaardparameteralias -lp gemaakt voor alle ingebouwde PowerShell-cmdlets met een -LiteralPath parameter.
Los Get-Item -LiteralPath a*b op als a*b eigenlijk niet bestaat om een fout te retourneren
Voorheen, wanneer een wildcard werd aangetoond, zou deze hetzelfde worden behandeld als -Path en als de wildcard geen bestanden vond, zou hij stilzwijgend worden afgesloten. Het juiste gedrag zou moeten zijn dat -LiteralPath letterlijk is, dus als het bestand niet bestaat, zou het een fout moeten geven. De wijziging houdt in dat wildcards die met -Literal worden gebruikt, letterlijk worden behandeld.
Werkmap instellen op huidige map in Start-Job
De Start-Job cmdlet gebruikt nu de huidige map als de werkmap voor de nieuwe taak.
Verwijder -Protocol uit *-Computer cmdlets
De -Protocol parameter is verwijderd uit de volgende cmdlets:
Rename-ComputerRestart-ComputerStop-Computer
DCOM wordt niet meer ondersteund voor veraf communicatie. De cmdlets bieden alleen ondersteuning voor externe WSMAN-communicatie.
Verwijder -ComputerName uit *-Service cmdlets
Om het consistente gebruik van PSRP te stimuleren, werd de -ComputerName parameter uit *-Service cmdlets verwijderd. Gebruik Invoke-Command in plaats daarvan om de cmdlets uit te voeren op externe computers.
Oplossing Get-Content -Delimiter om het scheidingsteken niet op te nemen in de geretourneerde regels
Voorheen was de uitvoer tijdens gebruik Get-Content -Delimiter inconsistent en onhandig omdat verdere verwerking van de gegevens nodig was om de scheidingsteken te verwijderen. Met deze wijziging wordt het scheidingsteken in geretourneerde regels verwijderd.
Wijzigingen in Format-Hex
De -Raw parameter doet nu niets. De Format-Hex cmdlet geeft een nauwkeurige weergave van getallen weer, inclusief alle bytes voor hun type. Dit is wat de -Raw parameter vóór deze wijziging heeft gedaan.
Typefout herstellen in Get-ComputerInfo eigenschapsnaam
BiosSerialNumber werd verkeerd gespeld en BiosSeralNumber is veranderd in de juiste spelling.
Wijzigingen in beschikbare hash-algoritmen
De volgende hash-algoritmen zijn verwijderd uit .NET:
MACTripleDESRIPEMD160
Deze wijziging is van invloed op de Get-FileHash cmdlet.
Validatie toevoegen aan Get-* cmdlets waarbij het doorgeven van $null alle objecten retourneert in plaats van fout
Het doorgeven $null naar een van de volgende geeft nu een foutmelding:
Get-Credential -UserNameGet-Event -SourceIdentifierGet-EventSubscriber -SourceIdentifierGet-Help -NameGet-PSBreakpoint -ScriptGet-PSProvider -PSProviderGet-PSSessionConfiguration -NameGet-Runspace -NameGet-RunspaceDebug -RunspaceNameGet-Service -NameGet-TraceSource -NameGet-Variable -Name
Ondersteuning toevoegen voor de W3C Extended Log-bestandsindeling in Import-Csv
Voorheen kan de Import-Csv cmdlet niet worden gebruikt om de logboekbestanden rechtstreeks te importeren in de uitgebreide W3C-logboekindeling en is er extra actie vereist. Met deze wijziging wordt de uitgebreide W3C-logboekindeling ondersteund.
Import-Csv is van toepassing pstypenames bij het importeren wanneer de typegegevens aanwezig zijn in het CSV-bestand
Eerder werden objecten die werden geëxporteerd met Export-Csv en geïmporteerd met TypeInformation niet behouden de typegegevens. Deze wijziging voegt indien beschikbaar de type-informatie toe aan het pstypenames-element vanuit het CSV-bestand.
-NoTypeInformation is de standaardinstelling op Export-Csv
Voorheen zou de Export-Csv cmdlet een opmerking uitvoeren als de eerste regel met de typenaam van het object. De wijziging sluit standaard de typegegevens uit omdat deze niet wordt begrepen door de meeste CSV-hulpprogramma's. Deze wijziging is aangebracht om feedback van klanten aan te pakken.
Gebruik -IncludeTypeInformation om het vorige gedrag te behouden.
Toestaan * om te worden gebruikt in registerpad voor Remove-Item
Voorheen zou -LiteralPath een wildcard hetzelfde behandelen als -Path en als de wildcard geen bestanden vond, zou hij stilletjes stoppen. Het juiste gedrag zou moeten zijn dat -LiteralPath letterlijk is, dus als het bestand niet bestaat, zou het een fout moeten geven. Verandering is om wildcards die met -Literal gebruikt worden letterlijk te behandelen.
Group-Object sorteert nu de groepen
Als onderdeel van de prestatieverbetering Group-Object geeft nu een gesorteerde lijst van de groepen terug.
Hoewel u niet op de volgorde moet vertrouwen, kan deze verandering u problemen geven als u de eerste groep wilde hebben. We hebben besloten dat deze prestatieverbetering de wijziging waard was, omdat de impact van het afhankelijk zijn van eerder gedrag laag is.
Standaarddeviatie in Measure-Object
De uitvoer van Measure-Object bevat nu een StandardDeviation eigenschap.
Get-Process | Measure-Object -Property CPU -AllStats
Count : 308
Average : 31.3720576298701
Sum : 9662.59375
Maximum : 4416.046875
Minimum :
StandardDeviation : 264.389544720926
Property : CPU
Get-PfxCertificate -Password
Get-PfxCertificate heeft nu de parameter Password, die een SecureString aanneemt. Op deze manier kunt u deze niet-interactief gebruiken:
$certFile = '\\server\share\pwd-protected.pfx'
$certPass = Read-Host -AsSecureString -Prompt 'Enter the password for certificate: '
$certThumbPrint = (Get-PfxCertificate -FilePath $certFile -Password $certPass ).ThumbPrint
Verwijdering van de more functie
In het verleden heeft PowerShell een functie verzonden op Windows genaamd more die more.com verpakt. Deze functie is nu verwijderd.
De functie help is ook gewijzigd om more.com te gebruiken op Windows, of de standaardpager van het systeem die is opgegeven door $Env:PAGER op niet-Windows-platforms.
cd DriveName: nu brengt gebruikers terug naar de huidige werkmap in die schijf
Voorheen, wanneer Set-Location of cd werd gebruikt om terug te keren naar een PSDrive, werden gebruikers naar de standaardlocatie van die PSDrive gestuurd. Gebruikers worden nu verzonden naar de laatst bekende huidige werkmap voor die sessie.
cd - keert terug naar vorige directory
C:\Windows\System32> cd C:\
C:\> cd -
C:\Windows\System32>
Of op Linux:
PS /etc> cd /usr/bin
PS /usr/bin> cd -
PS /etc>
En cdcd -- verander ook naar $HOME.
Update-Help als niet-beheerder
Op verzoek van velen hoeft Update-Help niet langer als beheerder te worden uitgevoerd.
Update-Help gebruikt nu standaard een map met gebruikersspecifieke instellingen om helpbestanden op te slaan.
Where-Object -Not
Met de toevoeging van -Not parameter aan Where-Object, kan een object in de pijplijn worden gefilterd op het niet bestaan van een eigenschap of een null/lege eigenschapswaarde.
Met deze opdracht worden bijvoorbeeld alle services geretourneerd waarvoor geen afhankelijke services zijn gedefinieerd:
Get-Service | Where-Object -Not DependentServices
Wijzigingen in web-cmdlets
De onderliggende .NET-API van de web-cmdlets is gewijzigd in System.Net.Http.HttpClient. Deze wijziging biedt veel voordelen. Deze wijziging heeft echter samen met een gebrek aan interoperabiliteit met Internet Explorer geleid tot verschillende belangrijke wijzigingen binnen Invoke-WebRequest en Invoke-RestMethod.
-
Invoke-WebRequestondersteunt nu alleen basis HTML-parsing.Invoke-WebRequestGeeft altijd eenBasicHtmlWebResponseObjectobject terug. DeParsedHtmlenFormseigenschappen zijn verwijderd. -
BasicHtmlWebResponseObject.Headerswaarden zijn nuString[]in plaats vanString. -
BasicHtmlWebResponseObject.BaseResponsenu eenSystem.Net.Http.HttpResponseMessageobject is. - De
Responseeigenschap op Web Cmdlet-uitzonderingen is nu eenSystem.Net.Http.HttpResponseMessageobject. - Strikte RFC-headerverwerking is nu standaard voor de parameter
-Headersen parameter-UserAgent. Dit kan worden omzeild met-SkipHeaderValidation. -
file://enftp://URI-schema's worden niet langer ondersteund. -
System.Net.ServicePointManagerInstellingen worden niet langer gerespecteerd. - Er is momenteel geen verificatie op basis van certificaten beschikbaar in macOS.
- Het gebruik van
-Credentialover eenhttp://URI zal resulteren in een fout. Gebruik eenhttps://URI of geef de-AllowUnencryptedAuthenticationparameter in om de fout te onderdrukken. -
-MaximumRedirectionproduceert nu een beëindigingsfout wanneer omleidingspogingen de opgegeven limiet overschrijden in plaats van de resultaten van de laatste omleiding terug te geven. - In PowerShell 6.2 is een wijziging aangebracht in UTF-8-codering voor JSON-antwoorden. Wanneer een tekenset niet wordt opgegeven voor een JSON-antwoord, moet de standaardcodering UTF-8 zijn per RFC 8259.
- Standaardcodering ingesteld op UTF-8 voor
application-jsonantwoorden - Parameter toegevoegd
-SkipHeaderValidationom headers toe te staanContent-Typedie niet compatibel zijn met standaarden - Parameter toegevoegd
-Formter ondersteuning van vereenvoudigdemultipart/form-dataondersteuning - Compatibele, niet hoofdlettergevoelige verwerking van relationele sleutels
- Parameter
-Resumetoegevoegd voor web-cmdlets
Invoke-RestMethod retourneert nuttige informatie wanneer er geen gegevens worden geretourneerd
Wanneer een API slechts null retourneert, serialiseerde Invoke-RestMethod dit als de tekenreeks "null" in plaats van $null. Deze wijziging corrigeert de logica in Invoke-RestMethod om een geldige JSON-waarde null op de juiste manier te serialiseren als $null.
Web-cmdlets waarschuwen wanneer -Credential wordt verzonden via niet-versleutelde verbindingen
Wanneer u HTTP gebruikt, worden inhoud met inbegrip van wachtwoorden verzonden als duidelijke tekst. Deze wijziging zorgt ervoor dat dit standaard niet wordt toegestaan en zal een fout melden als inloggegevens onveilig worden doorgegeven. Gebruikers kunnen dit omzeilen door de switch te -AllowUnencryptedAuthentication gebruiken.
Parameter -OutFile maken in web-cmdlets om te werken zoals -LiteralPath
Vanaf PowerShell 7.1 werkt de parameter OutFile van de web-cmdlets als LiteralPath en worden geen jokertekens verwerkt.
API-wijzigingen
Klasse verwijderen AddTypeCommandBase
De AddTypeCommandBase klasse werd verwijderd uit Add-Type om de prestaties te verbeteren. Deze klasse wordt alleen gebruikt door de Add-Type cmdlet en mag geen invloed hebben op gebruikers.
Verwijderd VisualBasic als ondersteunde taal in Add-Type
In het verleden kunt u Visual Basic code compileren met behulp van de cmdlet Add-Type. Visual Basic werd zelden gebruikt met Add-Type. Deze functie is verwijderd om de grootte van PowerShell te verkleinen.
Ondersteuning voor RunspaceConfiguration is verwijderd
Voorheen kon u bij het programmatisch maken van een PowerShell-runspace met behulp van de API de verouderde RunspaceConfiguration of nieuwere InitialSessionState klassen gebruiken. Deze wijziging verwijderde de ondersteuning voor RunspaceConfiguration en alleen ondersteunt InitialSessionState.
CommandInvocationIntrinsics.InvokeScript argumenten binden aan $input in plaats van $args
Een onjuiste positie van een parameter heeft ertoe geleid dat de argumenten zijn doorgegeven als invoer in plaats van als argumenten.
Verwijderen ClrVersion en BuildVersion eigenschappen uit $PSVersionTable
De ClrVersion eigenschap van $PSVersionTable is niet nuttig met CoreCLR. Eindgebruikers mogen die waarde niet gebruiken om de compatibiliteit te bepalen.
De eigenschap BuildVersion is gekoppeld aan de Windows buildversie, die niet beschikbaar is op niet-Windows platforms. Gebruik de GitCommitId eigenschap om de exacte buildversie van PowerShell op te halen.
Unicode-escapeparsering implementeren
`u#### of `u{####} wordt omgezet naar het bijbehorende Unicode-teken. Om een letterlijke `uuit te voeren , ontsnap aan de backtick: ``u.
Parameterbindingsprobleem met ValueFromRemainingArguments in PS-functies
ValueFromRemainingArguments nu geeft de waarden terug als een array in plaats van een enkele waarde die zelf een array is.
Opgeschoond gebruik van CommandTypes.Workflow en WorkflowInfoCleaned
Code opschonen met betrekking tot het gebruik van CommandTypes.Workflow en WorkflowInfo in System.Management.Automation.
Deze kleine breaking changes hebben voornamelijk invloed op helpprovidercode.
- Wijzig de publieke constructors van
WorkflowInfonaar intern. We bieden geen ondersteuning meer voor workflows, dus is het logisch om mensen te verhinderenWorkflowexemplaren te maken. - Verwijder het type System.Management.Automation.DebugSource , omdat dit alleen wordt gebruikt voor foutopsporing van werkstromen.
- Verwijder de overload van
SetParentvan de abstracte klasse Debugger dat alleen wordt gebruikt voor het debuggen van workflows. - Verwijder dezelfde overbelasting van
SetParentde afgeleide klasse RemotingJobDebugger.
Verpak het retourresultaat niet in PSObject bij het converteren van een ScriptBlock naar een delegate.
Wanneer a ScriptBlock wordt omgezet naar een gedelegeertype dat in C#-context wordt gebruikt, brengt het wrappen van het resultaat in een PSObject onnodige problemen met zich mee:
- Wanneer de waarde wordt omgezet naar het type delegate return, wordt de
PSObjectin feite weer uitgepakt. Dus hetPSObjectis overbodig. - Wanneer het type delegate return is
object, wordt het omwikkeld met aPSObject, waardoor het moeilijk is om mee te werken in C#-code.
Na deze wijziging is het geretourneerde object het onderliggende object.
Ondersteuning voor externe toegang
PowerShell Remoting (PSRP) via WinRM wordt niet ondersteund voor niet-Windows-platforms. U kunt externe communicatie van PowerShell (PSRP) via WinRM van Windows gebruiken om verbinding te maken met andere Windows machines. PowerShell biedt ook ondersteuning voor externe communicatie via SSH op alle platforms (Windows, macOS en Linux). Zie voor meer informatie SSH remoting in PowerShell.
PowerShell Direct for Containers probeert eerst te gebruiken pwsh
PowerShell Direct is een functie van PowerShell en Hyper-V waarmee u verbinding kunt maken met een Hyper-V VM of container zonder netwerkverbinding of andere externe beheerservices.
In het verleden is PowerShell Direct verbonden met behulp van het ingebouwde Windows PowerShell-exemplaar in de container. PowerShell Direct probeert eerst verbinding te maken met elke beschikbare pwsh.exe variabele in de PATH omgeving. Als pwsh.exe niet beschikbaar is, valt PowerShell Direct terug op het powershell.exe.
Enable-PSRemoting Maakt nu aparte afstandseindpunten voor previewversies
Enable-PSRemoting maakt nu twee remote sessieconfiguraties aan:
- Een voor de primaire versie van PowerShell. Bijvoorbeeld:
PowerShell.6. Dit eindpunt kan worden vertrouwd bij kleine versie-updates als de systeembrede PowerShell 6-sessieconfiguratie. - Een versie-specifieke sessieconfiguratie, bijvoorbeeld:
PowerShell.6.1.0
Dit gedrag is handig als u meerdere PowerShell 6-versies wilt installeren en toegankelijk wilt maken op dezelfde computer.
Bovendien krijgen de previewversies van PowerShell nu hun eigen configuraties voor remote sessies nadat de cmdlet Enable-PSRemoting is uitgevoerd.
C:\WINDOWS\system32> Enable-PSRemoting
De uitvoer kan afwijken als u WinRM nog niet eerder hebt ingesteld.
WinRM is already set up to receive requests on this computer.
WinRM is already set up for remote management on this computer.
Vervolgens ziet u afzonderlijke PowerShell-sessieconfiguraties voor de preview en stabiele builds van PowerShell 6 en voor elke specifieke versie.
Get-PSSessionConfiguration
Name : PowerShell.6.2-preview.1
PSVersion : 6.2
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
Name : PowerShell.6-preview
PSVersion : 6.2
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
Name : powershell.6
PSVersion : 6.1
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
Name : powershell.6.1.0
PSVersion : 6.1
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
user@host:port syntaxis ondersteund voor SSH
SSH-clients ondersteunen doorgaans een verbindingsreeks in de indeling user@host:port. Met de toevoeging van SSH als protocol voor externe communicatie met PowerShell hebben we ondersteuning toegevoegd voor deze indeling van verbindingsreeks:
Enter-PSSession -HostName fooUser@ssh.contoso.com:2222
Telemetrie kan alleen worden uitgeschakeld met een omgevingsvariabele
PowerShell verzendt basistelemetriegegevens naar Microsoft wanneer deze worden gestart. De gegevens bevatten de naam van het besturingssysteem, de versie van het besturingssysteem en de PowerShell-versie. Met deze gegevens kunnen we beter inzicht krijgen in de omgevingen waarin PowerShell wordt gebruikt en kunnen we prioriteit geven aan nieuwe functies en oplossingen.
Als u zich wilt afmelden voor deze telemetrie, stelt u de omgevingsvariabele POWERSHELL_TELEMETRY_OPTOUT in op true, yesof 1. We ondersteunen het niet meer verwijderen van het bestand DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY om telemetrie uit te schakelen.