Megosztás a következőn keresztül:


A PowerShell 7.1 újdonságai

2020. november 11-én bejelentettük a PowerShell 7.1 általános elérhetőségét. A PowerShell 7.0-s verziójában létrehozott alapra építve erőfeszítéseink a közösségi problémákra összpontosítottak, és számos fejlesztést és javítást tartalmaztak. Elkötelezettek vagyunk annak biztosítása mellett, hogy a PowerShell stabil és teljesítménnyel rendelkező platform maradjon.

A PowerShell 7.1 a következő funkciókat, frissítéseket és kompatibilitástörő változásokat tartalmazza.

  • PSReadLine 2.1.0, amely tartalmazza a prediktív IntelliSense-t
  • A PowerShell 7.1 közzé lett téve a Microsoft Store-ban
  • Az ARM64 támogatásával frissített telepítőcsomagok az új operációsrendszer-verziókhoz
  • 4 új kísérleti funkció és 2 kísérleti funkció, amelyek az általános
  • Számos kompatibilitástörő változás a használhatóság javítása érdekében

A módosítások teljes listáját a GitHub-adattár CHANGELOG (VÁLTOZÁSNAPLÓ ) című témakörében találja.

PSReadLine 2.1.0

A PowerShell 7.1 a PSReadLine 2.1.0-t is tartalmazza. Ez a verzió tartalmazza a Prediktív IntelliSense-t. A Prediktív IntelliSense funkcióval kapcsolatos további információkért lásd a PowerShell-blog közleményét .

Microsoft Store telepítőcsomag

A PowerShell 7.1 közzé lett téve a Microsoft Store-ban. A PowerShell-kiadás a Microsoft Store webhelyén vagy a Windows Áruház alkalmazásban található.

A Microsoft Store-csomag előnyei:

  • Automatikus frissítések közvetlenül a Windowsba
  • Integrálható más szoftverterjesztési mechanizmusokkal, például Intune és SCCM

Megjegyzés

A rendszerben $PSHOME tárolt rendszerszintű konfigurációs beállítások nem módosíthatók. Ez magában foglalja a WSMAN-konfigurációt is. Ez megakadályozza, hogy a távoli munkamenetek a PowerShell Áruház-alapú telepítéséhez csatlakozzanak. A felhasználói szintű konfigurációk és az SSH-újraegyenlítés támogatott.

Egyéb telepítők

A támogatott operációs rendszerekről és a támogatási életciklusról a PowerShell támogatási életciklusában talál további információt.

Ellenőrizze az előnyben részesített operációs rendszer telepítési utasításait:

Emellett a PowerShell 7.1 támogatja a Debian, az Ubuntu és az ARM64 Alpine Linux ARM32- és ARM64-es verzióit.

Bár hivatalosan nem támogatott, a közösség az Archhoz és a Kali Linuxhoz is biztosított csomagokat.

Megjegyzés

A Debian 10+, CentOS 8+, Ubuntu 20.04, Alpine és Arm jelenleg nem támogatja a WinRM-újraindítást. Az SSH-alapú újraegyenlítés beállításával kapcsolatos részletekért lásd: PowerShell-újramotálás SSH-n keresztül.

Kísérleti funkciók

A kísérleti funkciókkal kapcsolatos további információkért lásd: Kísérleti funkciók használata.

A következő kísérleti funkciók már alapvető funkciók ebben a kiadásban:

Ebben a kiadásban a következő kísérleti funkciók lettek hozzáadva:

  • Microsoft.PowerShell.Utility.PSManageBreakpointsInRunspace

    • A PowerShell 7.1 kibővíti ezt a kísérleti funkciót, hogy hozzáadja a Runspace paramétert az összes *-PSBreakpoint parancsmaghoz. A Runspace paraméter egy runspace objektumot ad meg, amely a megadott runspace töréspontjaival kommunikál.
  • PSNativePSPathResolution – Ez a funkció lehetővé teszi, hogy a PowerShell-szolgáltató elérési útjait olyan natív parancsoknak adja át, amelyek nem támogatják a PowerShell elérési útjának szintaxisát.

  • PSCultureInvariantReplaceOperator – Ha egy operátori utasítás bal oldali operandusa -replace nem sztring, az operandus sztringgé lesz konvertálva. Ha a funkció engedélyezve van, az átalakítás nem használja a kulturális beállításokat a sztringek konvertálásához.

  • A PSSubsystemPluginModel a jövőbeli prediktív IntelliSense beépülő modulok támogatásának alapjait fekteti le.

Kompatibilitástörő változások és fejlesztések

  • A sztringek összehasonlítási viselkedése megváltozott a .NET 5.0-ban

    A PowerShell 7.1 a .NET 5.0-ra épül, amely a következő kompatibilitástörő változást vezette be:

    A .NET 5.0-s verziójától a kulturális invariáns sztring-összehasonlítások figyelmen kívül hagyják a nem nyomtatható vezérlőkarakterek használatát.

    A rendszer például a következő két sztringet tekinti azonosnak:

    # Escape sequence "`a" is Ctrl-G or [char]7
    'Food' -eq "Foo`ad"
    
    True
    
  • Javítás$?, hogy ne legyen, $false amikor a natív parancs a(z) (#13395) parancsra stderr ír

    Gyakori, hogy stderr a natív parancsok nem kívánnak hibajelzést adni. Ezzel a módosítással $? csak akkor lesz beállítva, $false ha a natív parancs nem nulla kilépési kóddal is rendelkezik. Ez a változás nem kapcsolódik a kísérleti funkcióhoz PSNotApplyErrorActionToStderr.

  • Ne $ErrorActionPreference befolyásolja stderr a natív parancsok kimenetét (#13361)

    Gyakori, hogy stderr a natív parancsok nem kívánnak hibajelzést adni. Ezzel a módosítással stderr a kimenet továbbra is rögzítve lesz az ErrorRecord objektumokban, de a futtatókörnyezet már nem érvényes $ErrorActionPreference , ha az ErrorRecord natív parancsból származik.

  • Átnevezés -FromUnixTime bekapcsolva -UnixTimeSecondsGet-Date a Unix időbevitelének engedélyezéséhez (#13084) (Köszönjük @aetos382!)

    A -FromUnixTime paraméter a 7.1-preview.2 verzióban lett hozzáadva. A paramétert átnevezték, hogy jobban megfeleljen az adattípusnak. Ez a paraméter 1970. január 1., 0:00:00 óta másodpercben megadott egész értéket vesz fel.

    Ez a példa egy Unix-időt (amelyet az 1970-01-01 0:00:00 óta eltelt másodpercek száma jelöl) DateTime értékre konvertál.

    Get-Date -UnixTimeSeconds 1577836800
    
    Wednesday, January 01, 2020 12:00:00 AM
    
  • Engedélyezze, hogy az explicit módon megadott elnevezett paraméter felülírja ugyanazt a hashtable splattingból (#13162)

    Ezzel a módosítással a névvel ellátott paraméterek a splattingból a paraméterlista végére kerülnek, így az összes explicit módon megadott elnevezett paraméter kötése után meg lesznek kötve. Az egyszerű függvények paraméterkötése nem jelez hibát, ha egy megadott nevű paraméter nem található. Az ismeretlen nevű paraméterek az $args egyszerű függvény paraméteréhez vannak kötve. A splatting argumentumlista végére való áthelyezése megváltoztatja a paraméterek sorrendjét a fájlban $args.

    Például:

    function SimpleTest {
        param(
            $Name,
            $Path
        )
        "Name: $Name; Path: $Path; Args: $args"
    }
    

    Az előző viselkedésben a MyPath nem kötött -Path , mert ez az argumentumlista harmadik argumentuma. ## Így végül a "$args" és a Blah = "World"

    PS> $hash = @{ Name = "Hello"; Blah = "World" }
    PS> SimpleTest @hash "MyPath"
    Name: Hello; Path: ; Args: -Blah: World MyPath
    

    Ezzel a módosítással a rendszer @hash áthelyezi az argumentumokat az argumentumlista végére. A MyPath lesz a lista első argumentuma, ezért a következőhöz -Pathvan kötve: .

    PS> SimpleTest @hash "MyPath"
    Name: Hello; Path: MyPath; Args: -Blah: World
    
  • Állítsa a kapcsolóparamétert -Qualifier nem pozícióba Split-Path (#12960) (Köszönjük @yecril71pl!)

  • Oldja fel a munkakönyvtárat literál elérési útként Start-Process , ha nincs megadva (#11946) (Köszönjük @NoMoreFood!)

  • A webes parancsmagok paraméterének létrehozása -OutFile-LiteralPath (#11701) (Köszönjük @iSazonov!)

  • Sztringparaméter-kötés BigInteger javítása numerikus literálokhoz (#11634) (Köszönet @vexx32!)

  • Windows Start-Process rendszeren létrehoz egy folyamatkörnyezetet az aktuális munkamenet összes környezeti változójával, és létrehoz -UseNewEnvironment egy új alapértelmezett folyamatkörnyezetet (#10830) (Köszönjük @iSazonov!)

  • Ne törje körbe a PSObject visszaadott eredményt, amikor meghatalmazottká konvertál ScriptBlock (#10619)

    Ha egy ScriptBlock delegált típussá alakul át, amelyet c# környezetben kell használni, az eredmény PSObject körbefuttatása felesleges problémákat okoz:

    • Amikor az érték delegált visszatérési típussá lesz konvertálva, a PSObject rendszer lényegében le lesz bontva. Tehát a PSObject felesleges.
    • Ha a delegált visszatérési típusa , objectakkor a C#-kódban PSObject nehezen használhatóvá válik.

    A módosítás után a visszaadott objektum az alapul szolgáló objektum.