PowerShell Core 6.2 の新機能
PowerShell Core 6.2 リリースでは、パフォーマンスの向上、バグ修正、品質を向上するためのコマンドレットと言語の軽微な強化に焦点を置いています。 すべての機能強化一覧については、GitHub で詳細な変更ログを参照してください。
試験的な機能
以前のバージョンで試験的機能のサポートが有効になりました。 6\.2 リリースでは、4 つの試験的機能を試すことができます。その機能を改善し、主流の機能に昇格させる価値があるかどうかを判断できるように、フィードバックを提供してください。
使用できる試験的機能の一覧を取得するには、Get-ExperimentalFeature
を使います。 これらの機能は、Enable-ExperimentalFeature
および Disable-ExperimentalFeature
で有効または無効にできます。
コマンドが見つからない場合の候補
この機能では、あいまい一致を使用して、誤入力された可能性があるコマンドやコマンドレットの候補を見つけます。
Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion
例
この例では、スペルが正しくないコマンドレット名に対して、あいまい一致で可能性が高い候補から低い候補の順にいくつかの候補が検出されます。
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.
暗黙的なリモート バッチ処理
パイプラインで暗黙的なリモート処理を使用すると、PowerShell ではパイプライン内の各コマンドが個別に処理されます。 パイプラインの実行中、クライアントとリモート システムの間でオブジェクトのシリアル化と de-serialized
が繰り返し行われます。
この機能により、PowerShell ではパイプラインが分析され、コマンドを実行しても安全であり、コマンドがターゲット システム上に存在するかどうかが判断されます。 true の場合、PowerShell ではパイプライン全体がリモートで実行され、クライアントに対して結果のシリアル化と de-serializes
のみが行われます。
Enable-ExperimentalFeature -Name PSImplicitRemotingBatching
localhost 上での Get-Process | Sort-Object
の実際のテストは、10 - 15 秒から 20 - 30 ミリ秒に短縮されます。 この機能は、クライアント上でのみ有効にする必要があります。 サーバー上で変更の必要はありません。
一時ドライブ
Enable-ExperimentalFeature -Name PSTempDrive
PowerShell Core をさまざまなオペレーティング システムで使用している場合、一時ディレクトリを見つけるための環境変数が Windows、macOS、Linux で異なることがわかります。 この機能を使用すると、Temp:
という PSDrive が自動的に使用しているオペレーティング システムの一時フォルダーにマップされます。
例
PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!
ネイティブ ファイル コマンド (Linux 上の ls
など) では PSDrive が認識されないため、この Temp:
ドライブが表示されない点に注意してください。
短縮形の展開
PowerShell コマンドレットには、わかりやすい名詞が用意されています。 その結果、長い名前は入力がより困難になっています。 この機能を使用すると、コマンドレットの大文字を入力し、タブ補完を使用して一致を見つけることができます。
Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion
例
PS> i-arsavsf
Tab キーを押し、Azure PowerShell Az モジュールをインストールしている場合は、次のようにオートコンプリートされます。
PS> Import-AzRecoveryServicesAsrVaultSettingsFile
注意
この機能は、対話的に使用するためのものです。 短縮形のコマンドレットは実行できません。 この機能はエイリアスに代わるものではありません。
重大な変更
- Windows PowerShell に合わせて
Write-Output
の-NoEnumerate
の動作を修正します。 (#9069) - 結果を
Join-String -InputObject 1,2,3
result と等しくする1,2,3 | Join-String
(#8611) (感謝) @sethvs!) - および 関連するテストに
Sort-Object
を追加-Stable
(#7862) (感謝)@KirkMunro!) - 秒の小数部を受け入れるようにコマンドレットを改善
Start-Sleep
(#8537) (感謝) @Prototyyppi!) - すべてのカルチャで
case-insensitive
の OrdinalIgnoreCase を使用するようにハッシュテーブルを変更します (#8566) -
で LiteralPath
Import-Csv
を修正して出力にGet-ChildItem
バインド (#8277) (感謝)@iSazonov!) - で二重引用符区切り記号が使用
Import-Csv
されている場合、名前のない列はスキップされなくなりました (#7899) (感謝) @Topping!) -
Get-ExperimentalFeature
に-ListAvailable
スイッチがなくなります (#8318) - Debug パラメーターが Inquire ではなく Continue に設定
$DebugPreference
されるようになりました (#8195) (感謝)@KirkMunro!) - pwsh で使用される非対話型のリダイレクトされ、エンコードされたコマンドで指定されている場合は、
-OutputFormat
を適用します (#8115) - GAC から読み込む前に、モジュール ベース パスからアセンブリを読み込みます (#8073)
- Linux プレビュー パッケージからチルダを削除します (#8244)
- プロファイルの処理の前に
-WorkingDirectory
の処理を移動します (#8079) - Unix で環境変数を追加
PATHEXT
しない (#7697) (感謝) @iSazonov!)
の既知の問題
- Windows IOT ARM プラットフォーム上のリモート処理には、モジュールの読み込みに関する問題があります。 (#8053) を参照してください
一般的な更新と修正
- 大文字と小文字を区別するファイルシステム上で、ファイルとフォルダーの大文字と小文字を区別しないタブ補完を有効にします (#8128)
- PSVersionInfo.PSVersion と PSVersionInfo.PSEdition をパブリックにする (#8054) (感謝) @KirkMunro!)
- in ブロックの
catch{ }
型推論を$PSItem
$_
/ 追加 (#8020) (感謝)@vexx32!) - 静的メソッド呼び出し型の推論を修正 (#8018) (感謝) @SeeminglyScience!)
- 、、PSObject、Hashtable に対して推論された型を
Select-Object
Group-Object
Create (#7231) (感謝)@powercode!) -
ByRef-like
型パラメーターを使用した呼び出し方法をサポートします (#7721) - Windows PowerShell モジュールのパスが環境の PSModulePath に既に含まれている場合を処理します (#7727)
- プレーン テキストを格納することで非 Windows 向けに
SecureString
コマンドレットを有効にします (#9199) - securestring を使用して clixml をインポートするときの非 Windows 上のエラー メッセージを改善します (#7997)
- パラメーター ReplyTo を に
Send-MailMessage
追加 (#8727) (感謝) @replicaJunction!) - 現在不使用のメッセージを
Send-MailMessage
に追加します (#9178) - WinRM が存在しないときに
localhost
上で動作するようRestart-Computer
を修正します (#9160) - PowerShell のホスト中に
Start-Job
から終了エラーをスローするようにします (#9128) - ushort、uint、ulong、および short リテラルの C# スタイル型アクセラレータとサフィックスを追加 (#7813) (感謝) @vexx32!)
- 数値リテラルの新しいサフィックスを追加しました - about_Numeric_Literals (#7901) を参照してください (感謝) @vexx32!)
- SupportsShouldProcess が 'true' に設定されていない場合に影響レベルを正しく報告する (#8209) (感謝) @vexx32!)
- Web コマンドレットでの要求文字セットの問題を修正 (#8742) (感謝) @markekraus!)
- Web コマンドレットに関する問題を修正
100-continue
(#8679) (感謝) @markekraus!) - Web コマンドレットでのファイル ブロックの問題を修正 (#7676) (感謝) @Claustn!)
- のコード ページ解析の
Invoke-RestMethod
問題を修正 (#8694) (感謝) @markekraus!) - JsonObject.ConvertToJson をパブリック API として公開するように
ConvertTo-Json
をリファクタリングします (#8682) - -Depth を使用して構成可能な最大深度
ConvertFrom-Json
を追加 (#8199) (感謝) @louistio!) - コマンドレットに EscapeHandling パラメーターを
ConvertTo-Json
追加 (#7775) (感謝) @iSazonov!) - pwsh と
Enter-PSHostProcess
に-CustomPipeName
を追加します (#8889) - Windows 上で
New-Item
を使用して相対シンボリック リンクを作成できるようにします (#8783) - 開発者モードの Windows ユーザーが昇格なしでシンボリック リンクを作成できるようにします (#8534)
-
Write-Information
で$null
を受け付けるようにします (#8774) - MAML ヘルプ コンテンツを含め、高度な関数の
Get-Help
を修正します (#8353) - 1 つのパラメーターのみが宣言されている場合の -Parameter での PSTypeName の問題を修正
Get-Help
(#8754) (感謝) @pougetat!) - コメントのヘルプとして ScriptBlock で実行された
Get-Help
のトークン計算の修正。 (#8238)(感謝) @hubuk!) - コマンドレット -Parameter パラメーターを変更
Get-Help
して文字列配列を受け入れるようにする (#8454) (感謝) @sethvs!) - パスにスペースが含まれている場合に PAGER を解決する (#8571) (感謝) @pougetat!)
- 関数 'help' の
less
の使用に、ユーザーに終了方法を指示するプロンプトを追加します (#7998) - コマンドレットにサポート列挙型と char 型を
Format-Hex
追加 (#8191) (感謝) @iSazonov!) -
Format-Hex
から ShouldProcess を削除します (#8178) - 新しい Offset パラメーターと Count パラメーターをコマンドレットに
Format-Hex
追加してリファクタリング (#7877) (感謝) @iSazonov!) - の 'label' のエイリアス キーとして 'name' を
ConvertTo-Html
許可します。'width' エントリを整数にできます (#8426) (感謝) @mklement0!) - scriptblock ベースの計算プロパティを で再び
ConvertTo-Html
機能させる (#8427) (感謝) @mklement0!) - パイプライン入力からテキストを作成するためのコマンドレット
Join-String
を追加 (#7660) (感謝) @powercode!) - コマンドレット FormatString パラメーター ロジックを修正
Join-String
しました (#8449) (感謝) @sethvs!) -
$RAWUI
を使用するようにClear-Host
を変更し、リモート処理のやり直しを許可します (#8609) -
Clear-Host
を単に[console]::clear
という名前に変更し、Unix から clear エイリアスを削除します (#8603) - で LiteralPath
Import-Csv
を出力にバインドするようにGet-ChildItem
修正しました (#8277) (感謝) @iSazonov!) - AliasHelpInfo のヘルプ関数でポケットベルを使用しないようにします (#8552)
- を に
Start-Transcript
追加-UseMinimalHeader
してトランスクリプト ヘッダーを最小限に抑えます (#8402) (感謝)@lukexjeremy!) -
Enable-ExperimentalFeature
およびDisable-ExperimentalFeature
コマンドレットを追加します (#8318) - logman.exe を使用できる場合、PSDiagnostics のすべてのコマンドレットを公開します (#8366)
- プラットフォームから Persist パラメーターを
New-PSDrive
non-Windows
削除する (#8291) (感謝)@lukexjeremy!) - のサポートを
cd +
追加 (#7206) (感謝) @bergmeister!) -
Set-Location -LiteralPath
を - および+という名前のフォルダーで機能するようにします (#8089) -
Test-Path
は、$false
空または$null
パスの値を指定すると を返します (#8080) (感謝) @vexx32!) - パスがどのプロバイダーと一致しない場合でも、動的パラメーターが返されるようにします (#7957)
- Unix プラットフォーム上で
Get-PSHostProcessInfo
とEnter-PSHostProcess
をサポートします (#8232) - コマンドレットの
Get-Content
割り当てを減らす (#8103) (感謝) @iSazonov!) - コンテンツの書き込み中に
Add-Content
が他のツールと読み取りアクセスを共有できるようにします (#8091) -
Get/Add-Content
コンテナーを対象とする場合に改善されたエラーがスローされます (#7823) (感謝) @kvprasoon!) - コマンドレットに 、
-NoUserOverrides
、および-ListAvailable
パラメーターをGet-Culture
追加-Name
(#7702) (感謝)@iSazonov!) - Encoding パラメーターの補完用に統一された属性を追加します。 (#7732)(感謝 @ThreeFive-O!)
- Encoding パラメーターで登録済みコード ページの数値 ID と名前を許可する (#7636) (感謝)@iSazonov!)
- ワイルドカード文字を使用した修正
Rename-Item -Path
(#7398) (感謝) @kwkam!) - と
Start-Transcript
ファイルが存在する場合は、削除せずに空のファイル (#8131) (感謝) @paalbra!) -
FileAccess.Read と FileShare.Read を使用してファイルを明示的にオープンソースします
Add-Type
(#7915) (感謝)@IISResetMe!) - 最新の Windows に合わせて
Enter-PSSession -ContainerId
を修正します (#7883) -
NestedModules プロパティに
Test-ModuleManifest
が設定されるようにします (#7859) - -UFormat に大文字と小文字を
Get-Date
追加%F
する (#7630) (感謝)@britishben!) - 依存関係のあるサービスを停止する修正
Set-Service -Status Stopped
(#5525) (感謝) @zhenggu!)