Nieuwe en bijgewerkte cmdlets

We hebben nieuwe en bijgewerkte bestaande cmdlets toegevoegd op basis van feedback van de community.

Archief-cmdlets

Met twee nieuwe cmdlets, Compress-Archive en , kunt u Expand-Archive ZIP-bestanden comprimeren en uitbreiden.

Zie de documentatie van de Microsoft.Powershell.Archive-module voor meer informatie.

Catalogus-cmdlets

Er zijn twee nieuwe cmdlets toegevoegd in de module Microsoft.PowerShell.Security.

Deze genereren en valideren Windows catalogusbestanden.

Klembord-cmdlets

Get-Clipboarden Set-Clipboard maken het eenvoudiger voor u om inhoud over te dragen van en naar een Windows PowerShell sessie. De Klembord-cmdlets ondersteunen afbeeldingen, audiobestanden, bestandslijsten en tekst.

Zie voor meer informatie:

CMS-cmdlets (Cryptographic Message Syntax)

De cmdlets voor cryptografische berichtsyntaxis ondersteunen versleuteling en ontsleuteling van inhoud met behulp van de standaard IETF-indeling voor het cryptografisch beveiligen van berichten, zoals beschreven door RFC5652.

De CMS-versleutelingsstandaard implementeert cryptografie met openbare sleutels, waarbij de sleutel die wordt gebruikt voor het versleutelen van inhoud (de openbare sleutel ) en de sleutel die wordt gebruikt voor het ontsleutelen van inhoud (de persoonlijke sleutel) gescheiden zijn.

Uw openbare sleutel kan algemeen worden gedeeld en is geen gevoelige gegevens. Inhoud die is versleuteld met de openbare sleutel, kan alleen worden ontsleuteld met behulp van de persoonlijke sleutel. Zie Public-key cryptografie voor meer informatie.

Zie voor meer informatie:

Certificaten vereisen een unieke sleutelgebruiks-id (EKU), zoals 'Ondertekening van programmacode' of 'Versleutelde e-mail', om ze te identificeren als certificaten voor gegevensversleuteling in PowerShell. Als u versleutelingscertificaten voor documenten wilt weergeven in de certificaatprovider, kunt u de dynamische parameter DocumentEncryptionCert van Get-ChildItem gebruiken:

Get-ChildItem Cert:\CurrentUser -DocumentEncryptionCert -Recurse

Gestructureerde objecten uit tekenreeksinhoud extraheren en parseren

ConvertFrom-String

De nieuwe ConvertFrom-String cmdlet ondersteunt twee modi:

  • Eenvoudige parseren met scheidingstekens
  • Automatisch gegenereerd voorbeeldgestuurd parseren

Parseren met scheidingstekens splitst standaard de invoer op witruimte en wijst eigenschapsnamen toe aan de resulterende groepen.

Met de parameter UpdateTemplate worden de resultaten van het leeralgoritme opgeslagen in een opmerking in het sjabloonbestand. Dit maakt het leerproces (de traagste fase) een een time-kosten. Het ConvertFrom-String uitvoeren met een sjabloon die het gecodeerde leeralgoritme bevat, is nu bijna onmiddellijk.

Zie ConvertFrom-String voor meer informatie.

Convert-String

Convert-String kunt u voor- en na voorbeelden geven van hoe tekst eruit moet zien. Met de cmdlet wordt uw tekst automatisch opgemaakt.

Zie Convert-String voor meer informatie.

Updates voor FileInfo-object

Informatie over de bestandsversie kan misleidend zijn, met name in gevallen waarin het bestand is gepatcht. WMF 5.0 voegt nieuwe scripteigenschappen FileVersionRaw en ProductVersionRaw toe aan FileInfo-objecten. Hier volgen de eigenschappen die worden weergegeven voor powershell.exe (ervan uitgaande $pid id van het PowerShell-proces is):

Get-Process -Id $pid -FileVersionInfo | Format-List *version*
FileVersionRaw    : 10.0.17763.1
ProductVersionRaw : 10.0.17763.1
FileVersion       : 10.0.17763.1 (WinBuild.160101.0800)
ProductVersion    : 10.0.17763.1

Format-Hex

Format-Hex hiermee kunt u tekst of binaire gegevens weergeven in hexadecimale indeling.

Zie Format-Hex voor meer informatie.

Get-ChildItem heeft de parameter -Depth

Get-ChildItem heeft nu een diepteparameter voor gebruik met Recurse om de recursie te beperken:

Ondersteuning voor modules voor het declareren van versiebereiken (1.*, enzovoort)

U kunt nu MinimumVersion en MaximumVersion combineren om de module binnen een specifiek bereik te importeren. De parameters ondersteunen ook jokertekens.

Import-Module psreadline -Verbose -MinimumVersion 1.0 -MaximumVersion 1.2.*
VERBOSE: Loading module from path 'C:\Program Files\WindowsPowerShell\Modules\psreadline\1.1\psreadline.psd1'.
VERBOSE: Importing cmdlet 'Get-PSReadlineKeyHandler'.
VERBOSE: Importing cmdlet 'Get-PSReadlineOption'.
VERBOSE: Importing cmdlet 'Remove-PSReadlineKeyHandler'.
VERBOSE: Importing cmdlet 'Set-PSReadlineKeyHandler'.
VERBOSE: Importing cmdlet 'Set-PSReadlineOption'.
VERBOSE: Importing function 'PSConsoleHostReadline'.

New-Guid

Er zijn veel scenario's waarin u een unieke id nodig hebt. De New-GUID cmdlet biedt een eenvoudige manier om een nieuwe GUID te maken.

New-Guid
Guid
----
e19d6ea5-3cc2-4db9-8095-0cdaed5a703d

Parameter NoNewLine

Out-File, Add-Content en hebben nu een nieuwe Set-Content NoNewline-switch waarmee een nieuwe regel na de uitvoer wordt weglaten. Bijvoorbeeld:

"This is " | Out-File -FilePath Example.txt -NoNewline
"a single " | Add-Content -Path Example.txt -NoNewline
"sentence." | Add-Content -Path Example.txt -NoNewline
Get-Content .\Example.txt
This is a single sentence.

Zonder NoNewline opgegeven, zou elk fragment zich op een afzonderlijke regel:

"This is " | Out-File -FilePath Example.txt
"a single " | Add-Content -Path Example.txt
"sentence." | Add-Content -Path Example.txt
Get-Content .\Example.txt
This is
a single
sentence.

De item-cmdlet en enkele gerelateerde cmdlets zijn uitgebreid ter ondersteuning van symbolische koppelingen.

In dit voorbeeld maken we een nieuw symbolisch koppelingsbestand met de naam MySymLinkFile.txt in C:\Temp, dat is gekoppeld aan $pshome\profile.ps1. Alle drie de voorbeelden produceren hetzelfde resultaat.

New-Item -ItemType SymbolicLink -Path C:\Temp -Name MySymLinkFile.txt -Value $pshome\profile.ps1
New-Item -ItemType SymbolicLink -Path C:\Temp\MySymLinkFile.txt -Value $pshome\profile.ps1
New-Item -ItemType SymbolicLink -Name C:\Temp\MySymLinkFile.txt -Value $pshome\profile.ps1

In dit voorbeeld maken we een nieuwe symbolische koppelingsmap met de naam MySymLinkDir in C:\Temp die is gekoppeld aan $pshome map. Alle drie de voorbeelden produceren hetzelfde resultaat.

New-Item -ItemType SymbolicLink -Path C:\Temp -Name MySymLinkDir -Value $pshome
New-Item -ItemType SymbolicLink -Path C:\Temp\MySymLinkDir -Value $pshome
New-Item -ItemType SymbolicLink -Name C:\Temp\MySymLinkDir -Value $pshome

Dezelfde combinaties van Pad en Naam die zijn toegestaan zoals hierboven beschreven.

New-Item -ItemType HardLink -Path C:\Temp -Name MyHardLinkFile.txt -Value $pshome\profile.ps1

Directory-verbinding

Dezelfde combinaties van Pad en Naam die zijn toegestaan zoals hierboven beschreven.

New-Item -ItemType Junction -Path C:\Temp\MyJunctionDir -Value $pshome

Get-ChildItem

Get-ChildItem geeft nu een 'l' weer in de eigenschap Mode om een symbolisch koppelingsbestand of map aan te geven.

Get-ChildItem C:\Temp | sort LastWriteTime -Descending

Directory: C:\Temp

Mode       LastWriteTime Length Name
----       ------------- ------ ----
-a---- 6/13/2014 3:00 PM     16 File.txt
d----- 6/13/2014 3:00 PM        Directory
-a---l 6/13/2014 3:21 PM      0 MySymLinkFile.txt
d----l 6/13/2014 3:22 PM        MySymLinkDir
-a---l 6/13/2014 3:23 PM  23304 MyHardLinkFile.txt
d----l 6/13/2014 3:24 PM        MyJunctionDir

Remove-Item

Het verwijderen van symbolische koppelingen werkt zoals het verwijderen van elk ander itemtype.

Remove-Item C:\Temp\MySymLinkFile.txt
Remove-Item C:\Temp\MySymLinkDir

Gebruik de parameter Force om de bestanden in de doelmap en de symbolische koppeling te verwijderen.

Remove-Item C:\Temp\MySymLinkDir -Force

New-TemporaryFile

Soms moet u in uw scripts een tijdelijk bestand maken. U kunt dit nu doen met de New-TemporaryFile cmdlet :

$tempFile = New-TemporaryFile
$tempFile.FullName
C:\Users\user1\AppData\Local\Temp\tmp375.tmp

Beheer van netwerkswitch met PowerShell

Met de network switch-cmdlets, geïntroduceerd in WMF 5.0, kunt u switch-, virtueel LAN (VLAN) en basic Layer 2-netwerkswitchpoortconfiguratie toepassen op netwerkswitches die zijn gecertificeerd met Windows Server 2012 R2-logo. Met behulp van deze cmdlets kunt u het volgende uitvoeren:

  • Globale switchconfiguratie, zoals:

    • Hostnaam instellen
    • Switch-banner instellen
    • Configuratie persistent maken
    • Functie in- of uitschakelen
  • VLAN-configuratie:

    • VLAN maken of verwijderen
    • VLAN in- of uitschakelen
    • VLAN opsnoemen
    • Stel een gebruiksvriendelijke naam in op een VLAN
  • Configuratie van laag 2-poort:

    • Poorten opsnoemen
    • Poorten in- of uitschakelen
    • Poortmodi en -eigenschappen instellen
    • VLAN toevoegen aan of koppelen aan Trunk of Toegang op de poort

Zie de NetworkSwitchManager-documentatie voor meer informatie.

PowerShell-cmdlets genereren op basis van een OData-eindpunt met ODataUtils

Met de ODataUtils-module kunt u PowerShell-cmdlets genereren van REST-eindpunten die OData ondersteunen. De module Microsoft.PowerShell.ODataUtils bevat de volgende functies:

  • Kanaal aanvullende informatie van het eindpunt aan de serverzijde naar de clientzijde.
  • Ondersteuning voor paginering aan clientzijde
  • Filteren op de server met behulp van de parameter -Select
  • Ondersteuning voor webaanvraagheaders

De proxy-cmdlets die door de cmdlet worden gegenereerd, bieden aanvullende informatie van het Export-ODataEndPointProxy OData-eindpunt aan de serverzijde in de informatiestroom.

Import-Module Microsoft.PowerShell.ODataUtils -Force
$generatedProxyModuleDir = Join-Path -Path $env:SystemDrive -ChildPath 'ODataDemoProxy'
$uri = "http://services.odata.org/V3/(S(fhleiief23wrm5a5nhf542q5))/OData/OData.svc/"
Export-ODataEndpointProxy -Uri $uri -OutputModule $generatedProxyModuleDir -Force -AllowUnSecureConnection -Verbose -AllowClobber

In het volgende voorbeeld wordt het beste product opgehaald en wordt de uitvoer in de variabele $infoStream vast leggen.

Door de parameter IncludeTotalResponseCount op te geven, krijgen we het totale aantal productrecords dat beschikbaar is op de server.

Import-Module $generatedProxyModuleDir -Force
$product = Get-Product -Top 1 -AllowUnsecureConnection -AllowAdditionalData -IncludeTotalResponseCount -InformationVariable infoStream
$additionalInfo = $infoStream.GetEnumerator() | % MessageData
$additionalInfo['odata.count']

U kunt de records van de server in batches op halen met behulp van pagineringsondersteuning aan de clientzijde. Dit is handig wanneer u een grote hoeveelheid gegevens van de server via het netwerk moet krijgen.

$skipCount = 0
$batchSize = 3
while($skipCount -le $additionalInfo['odata.count'])
{
  Get-Product -AllowUnsecureConnection -AllowAdditionalData -Top $batchSize -Skip $skipCount
  $skipCount += $batchSize
}

De gegenereerde proxy-cmdlets ondersteunen de select-parameter die wordt gebruikt als een filter om alleen de recordeigenschappen te ontvangen die de client nodig heeft. Het filteren vindt plaats op de server, waardoor er minder gegevens via het netwerk worden overgedragen.

Get-Product -Top 2 -AllowUnsecureConnection -AllowAdditionalData -Select Name

De Export-ODataEndpointProxy cmdlet en de proxy-cmdlets die door de cmdlet worden gegenereerd, ondersteunen nu de parameter Headers. De header kan worden gebruikt om aanvullende informatie te kanaalen die wordt verwacht door het OData-eindpunt.

In het volgende voorbeeld wordt een hashtabel met een abonnementssleutel verstrekt aan de parameter Headers. Dit is een typisch voorbeeld voor services die een abonnementssleutel voor verificatie verwachten.

Export-ODataEndpointProxy -Uri $endPointUri -OutputModule $generatedProxyModuleDir -Force -AllowUnSecureConnection -Verbose -Headers @{'subscription-key'='XXXX'}