PowerShell Core 6.2'deki Yenilikler
PowerShell Core 6.2 sürümü performans iyileştirmelerine, hata düzeltmelerine ve kaliteyi geliştiren daha küçük cmdlet ve dil geliştirmelerine odaklanmıştır. İyileştirmelerin tam listesini görmek için GitHub'da ayrıntılı değişiklik günlüklerimize göz atın.
Deneysel Özellikler
Daha önce Deneysel Özellikler desteğini etkinleştirmiştik. 6.2 sürümünde deneyebileceğiniz dört deneysel özellik vardır. İyileştirmeler yapabilmemiz ve özelliğin temel duruma yükseltmeye değip değmeyeceğine karar verebilmemiz için lütfen geri bildirim sağlayın.
Kullanılabilir deneysel özelliklerin listesini almak için kullanın Get-ExperimentalFeature
. ve Disable-ExperimentalFeature
ile Enable-ExperimentalFeature
bu özellikleri etkinleştirebilir veya devre dışı bırakabilirsiniz.
Komut Bulunamadı Önerileri
Bu özellik, yanlış yazdığınız komutlar veya cmdlet'ler için öneriler bulmak için belirsiz eşleştirme kullanır.
Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion
Örnek
Bu örnekte, yanlış yazılmış cmdlet adı, büyük olasılıkla en az olası olan birkaç öneriyle eşleşmektedir.
Get-Commnd
Get-Commnd : The term 'Get-Commnd' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ Get-Commnd
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module,
Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.
Örtük Uzaktan İletişim Toplu İşlemi
PowerShell, bir işlem hattında örtük uzaktan iletişim kullanırken işlem hattındaki her komutu bağımsız olarak ele alır. Nesneler ardışık olarak serileştirilir ve de-serialized
işlem hattının yürütülmesi üzerinden istemci ve uzak sistem arasında.
Bu özellik sayesinde PowerShell, komutun çalıştırılmasının güvenli olup olmadığını ve hedef sistemde mevcut olup olmadığını belirlemek için işlem hattını analiz eder. Doğru olduğunda, PowerShell işlem hattının tamamını uzaktan yürütür ve yalnızca seri hale getirir ve de-serializes
sonuçları istemciye geri gönderir.
Enable-ExperimentalFeature -Name PSImplicitRemotingBatching
Localhost üzerinde gerçek dünya testi Get-Process | Sort-Object
10-15 saniyeden 20-30 milisaniyeye düşer. Özelliğin yalnızca istemcide etkinleştirilmesi gerekir. Sunucuda değişiklik yapılması gerekmez.
Geçici Sürücü
Enable-ExperimentalFeature -Name PSTempDrive
PowerShell Core'ı farklı işletim sistemlerinde kullanıyorsanız, geçici dizini bulmak için ortam değişkeninin Windows, macOS ve Linux'ta farklı olduğunu keşfedeceksiniz! Bu özellik sayesinde, kullandığınız işletim sisteminin geçici klasörüne otomatik olarak eşlenen adlı Temp:
bir PSDrive alırsınız.
Örnek
PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!
Yerel dosya komutlarının (Linux'ta olduğu gibi ls
) PSDrive'ların farkında olmadığını ve bu Temp:
sürücüyü görmediğini unutmayın.
Kısaltma Genişletme
PowerShell cmdlet'lerinin açıklayıcı adlara sahip olması beklenir. Bu, uzun adlar yazmanın daha zor olmasıyla sonuçlanıyor. Bu özellik, cmdlet'in büyük harf karakterlerini yazmanıza ve eşleşme bulmak için sekme tamamlama özelliğini kullanmanıza olanak tanır.
Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion
Örnek
PS> i-arsavsf
Sekme tuşuna basıp Azure PowerShell Az modülünü yüklediyseniz, aşağıdakiler otomatik olarak tamamlanır:
PS> Import-AzRecoveryServicesAsrVaultSettingsFile
Not
Bu özelliğin etkileşimli olarak kullanılması amaçlanmıştır. Cmdlet'lerin kısaltılmış biçimleri yürütülemez. Bu özellik diğer adların yerini almamaktadır.
Hataya Neden Olan Değişiklikler
- Windows PowerShell ile tutarlı olması için içindeki
Write-Output
davranışı düzeltin-NoEnumerate
. (#9069) - Sonucu sonula
1,2,3 | Join-String
eşit yapJoin-String -InputObject 1,2,3
(#8611) (Teşekkürler@sethvs!) Sort-Object
ve ilgili testleri ekleme-Stable
(#7862) (Teşekkürler@KirkMunro!)- Kesirli saniyeleri kabul etmek için cmdlet'i geliştirme
Start-Sleep
(#8537) (Teşekkürler @Prototyyppi!) - OrdinalIgnoreCase kullanmak için karma tablosu tüm Kültürlerde olacak şekilde
case-insensitive
değiştirin (#8566) - Çıkışa bağlamak
Get-ChildItem
için içindeki LiteralPath'iImport-Csv
düzeltme (#8277) (Teşekkürler@iSazonov!) - (#7899) içinde
Import-Csv
çift tırnak sınırlayıcısı kullanılıyorsa artık adı olmayan bir sütunu atlamaz (Teşekkürler @Topping!) Get-ExperimentalFeature
artık anahtarı yok-ListAvailable
(#8318)- Debug parametresi artık Inquire yerine Continue olarak ayarlı
$DebugPreference
(#8195) (Teşekkürler@KirkMunro!) - Pwsh ile kullanılan etkileşimli olmayan, yeniden yönlendirilen, kodlanmış komutta belirtilirse kabul
-OutputFormat
edin (#8115) - GAC'den yüklemeye çalışmadan önce modül temel yolundan derleme yükleme (#8073)
- Linux önizleme paketlerinden tilde'yi kaldırma (#8244)
- Profilleri işlemeden
-WorkingDirectory
önce işlemeyi taşıma (#8079) - Unix'te ortam değişkeni eklemeyin
PATHEXT
(#7697) (Teşekkürler @iSazonov!)
Bilinen Sorunlar
- Windows IOT ARM platformlarında uzaktan iletişim, modülleri yüklerken sorun yaşıyor. Bkz. (#8053)
Genel Güncelleştirmeler ve Düzeltmeler
- Büyük/küçük harfe duyarlı dosya sistemindeki dosya ve klasörler için büyük/küçük harfe duyarlı olmayan sekme tamamlamayı etkinleştirme (#8128)
- PSVersionInfo.PSVersion ve PSVersionInfo.PSEdition'ı genel yapma (#8054) (Teşekkürler @KirkMunro!)
- Bloklar
catch{ }
için$_
/$PSItem
Tür Çıkarımı Ekleme (#8020) (Teşekkürler@vexx32!) - Statik yöntem çağırma türü çıkarımı düzeltin (#8018) (Teşekkürler @SeeminglyScience!)
- , ,
Group-Object
PSObject ve Hashtable içinSelect-Object
İçerik Oluşturucu tür çıkarılmıştır (#7231) (Teşekkürler@powercode!) - Tür parametreleriyle
ByRef-like
çağırma yöntemini destekleme (#7721) - Windows PowerShell modül yolunun zaten ortamın PSModulePath'inde olduğu durumu işleme (#7727)
- Düz metni depolayarak Windows dışı cmdlet'leri etkinleştirme
SecureString
(#9199) - Securestring ile clixml içeri aktarılırken Windows olmayanlarda hata iletisini iyileştirme (#7997)
- ReplyTo parametresi eklendi
Send-MailMessage
(#8727) (Teşekkürler @replicaJunction!) - 'a
Send-MailMessage
Eski ileti ekleme (#9178) - WinRM mevcut olmadığında üzerinde
localhost
çalışmak için düzeltmeRestart-Computer
(#9160) - PowerShell barındırılırken sonlandırma hatası oluşturma
Start-Job
(#9128) - Ushort, uint, ulong ve kısa değişmez değerler için C# stil türü hızlandırıcıları ve sonekleri ekleme (#7813) (Teşekkürler @vexx32!)
- Sayısal değişmez değerler için yeni sonekler eklendi - bkz. about_Numeric_Literals (#7901) (Teşekkürler) @vexx32!)
- SupportsShouldProcess 'true' olarak ayarlanmadığında etki düzeyini doğru bildirin (#8209) (Teşekkürler @vexx32!)
- Web Cmdlet'lerindeki İstek Karakter Kümesi Sorunlarını Düzeltme (#8742) (Teşekkürler @markekraus!)
- Web Cmdlet'leriyle ilgili Bekleme
100-continue
sorununu düzeltme (#8679) (Teşekkürler @markekraus!) - Web cmdlet'leriyle ilgili dosya engelleme sorununu düzeltme (#7676) (Teşekkürler @Claustn!)
- (#8694) içindeki
Invoke-RestMethod
kod sayfası ayrıştırma sorununu düzeltme (Teşekkürler @markekraus!) - JsonObject.ConvertToJson'ı genel API olarak kullanıma açmak için yeniden düzenleme
ConvertTo-Json
(#8682) - -Depth ile yapılandırılabilir maksimum derinlik
ConvertFrom-Json
ekleme (#8199) (Teşekkürler @louistio!) - cmdlet'ine
ConvertTo-Json
EscapeHandling parametresi ekleme (#7775) (Teşekkürler @iSazonov!) - pwsh'e ekle
-CustomPipeName
veEnter-PSHostProcess
(#8889) - (#8783) ile
New-Item
Windows'ta göreli sembolik bağlantılar oluşturmayı etkinleştirme - Geliştirici modundaki Windows kullanıcılarının yükseltme olmadan symlink oluşturmasına izin ver (#8534)
- Kabul
$null
etmek için etkinleştirWrite-Information
(#8774) - MAML yardım içeriğiyle gelişmiş işlevler için düzeltme
Get-Help
(#8353) - Yalnızca bir parametre bildirildiğinde (#8754) -Parameter ile PSTypeName sorunu düzeltilir
Get-Help
(Teşekkürler @pougetat!) - Açıklama yardımı için
Get-Help
ScriptBlock'ta yürütülen belirteç hesaplama düzeltmesi. (#8238) (Teşekkürler @hubuk!) - Cmdlet -Parameter parametresini dize dizilerini kabul etmek için değiştirin
Get-Help
(#8454) (Teşekkürler @sethvs!) - Yolu boşluk içeriyorsa PAGER'yi çözme (#8571) (Teşekkürler @pougetat!)
- Kullanıcıya nasıl çıkış yapılacağını bildirmek için 'help' işlevindeki kullanımına
less
istem ekleyin (#7998) - cmdlet'ine
Format-Hex
destek sabit listesi ve karakter türleri ekleme (#8191) (Teşekkürler @iSazonov!) - ShouldProcess'i (#8178) uygulamasından
Format-Hex
kaldırma - cmdlet'ine
Format-Hex
yeni Offset ve Count parametreleri ekleme ve cmdlet'i yeniden düzenleme (#7877) (Teşekkürler @iSazonov!) - içinde 'name' öğesine 'label'
ConvertTo-Html
için diğer ad anahtarı olarak izin ver, 'width' girişinin tamsayı (#8426) olmasını sağlar (Teşekkürler @mklement0!) - Betik bloğu tabanlı hesaplanmış özelliklerin (#8427) içinde
ConvertTo-Html
yeniden çalışmasını sağlama (Teşekkürler @mklement0!) - İşlem hattı girişinden metin oluşturmak için cmdlet
Join-String
ekleme (#7660) (Teşekkürler @powercode!) - FormatString parametre mantığı cmdlet'ini düzeltme
Join-String
(#8449) (Teşekkürler @sethvs!) - Uzaktan iletişim üzerinde çalışmak için kullanmaya
$RAWUI
geri dönünClear-Host
ve temizleyin (#8609) - Basitçe çağrıldığı şekilde
[console]::clear
değiştirinClear-Host
ve Unix'ten net diğer adı kaldırın (#8603) - Çıkışa bağlamak
Get-ChildItem
için içindeki LiteralPath'iImport-Csv
düzeltme (#8277) (Teşekkürler@iSazonov!) - help işlevi AliasHelpInfo için disk belleği kullanmamalıdır (#8552)
Start-Transcript
Döküm üst bilgisini en aza indirmek için öğesini ekleyin-UseMinimalHeader
(#8402) (Teşekkürler@lukexjeremy!)- ve
Disable-ExperimentalFeature
cmdlet'leri eklemeEnable-ExperimentalFeature
(#8318) - logman.exe varsa PSDiagnostics'ten tüm cmdlet'leri kullanıma sunma (#8366)
- Kalıcı parametresini platformdan
New-PSDrive
non-Windows
kaldırma (#8291) (Teşekkürler @lukexjeremy!) - (#7206) için
cd +
destek ekleme (Teşekkürler @bergmeister!) - - ve + adlı klasörlerle çalışmak için etkinleştir
Set-Location -LiteralPath
(#8089) Test-Path
boş veya$null
yol değeri verildiğinde döndürür$false
(#8080) (Teşekkürler@vexx32!)- Yol hiçbir sağlayıcıyla eşleşmese bile dinamik parametrenin döndürülmesine izin ver (#7957)
- Unix platformlarında ve
Enter-PSHostProcess
desteğiGet-PSHostProcessInfo
(#8232) - Cmdlet'teki
Get-Content
ayırmaları azaltma (#8103) (Teşekkürler @iSazonov!) - İçerik yazarken okuma erişimini diğer araçlarla paylaşmak için etkinleştirme
Add-Content
(#8091) Get/Add-Content
bir kapsayıcıyı hedeflerken geliştirilmiş hata oluşturur (#7823) (Teşekkürler @kvprasoon!)- cmdlet'ine
Get-Culture
ve-NoUserOverrides
-ListAvailable
parametreleri ekleme-Name
(#7702) (Teşekkürler@iSazonov!) - Kodlama parametresinin tamamlanması için birleşik öznitelik ekleyin. (#7732) (Teşekkürler @ThreeFive-O!)
- Kodlama parametrelerinde kayıtlı kod sayfalarının sayısal kimliklerine ve adlarına izin ver (#7636) (Teşekkürler@iSazonov!)
- Joker karakterle düzeltme
Rename-Item -Path
(#7398) (Teşekkürler @kwkam!) Start-Transcript
ve dosyası kullanıldığında silmek yerine boş dosya (#8131) (Teşekkürler@paalbra!)Add-Type
FileAccess.Read ve FileShare.Read ile açık kaynak dosyaları oluşturun (#7915) (Teşekkürler)@IISResetMe!)- En son Windows için düzeltme
Enter-PSSession -ContainerId
(#7883) - NestedModules özelliğinin (#7859) tarafından
Test-ModuleManifest
dolduruldığından emin olun - -UFormat'a
Get-Date
büyük/küçük harf ekleme%F
(#7630) (Teşekkürler@britishben!) - Bağımlılıkları olan hizmetleri durdurmak için düzeltme
Set-Service -Status Stopped
(#5525) (Teşekkürler @zhenggu!)