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,31,2,3 | Join-String (#8611) (感謝) @sethvs!)
  • テストのSort-Object追加-Stableと関連するテスト (#7862) (感謝)@KirkMunro!)
  • 秒の小数部を受け入れるようにコマンドレットを改善 Start-Sleep する (#8537) (感謝) @Prototyyppi!)
  • すべてのカルチャで case-insensitive の OrdinalIgnoreCase を使用するようにハッシュテーブルを変更します (#8566)
  • LiteralPathImport-Csv修正して出力にバインドする Get-ChildItem (#8277) (感謝)@iSazonov!)
  • (#7899) で Import-Csv 二重引用符区切り記号が使用されている場合、名前のない列はスキップされなくなりました (Thanks @Topping!)
  • Get-ExperimentalFeature-ListAvailable スイッチがなくなります (#8318)
  • Debug パラメーターが Inquire (#8195) ではなく Continue に設定$DebugPreferenceされるようになりました (Thanks@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!)
  • Group-ObjectPSObjectHashtableSelect-Object推論された型を作成する (#7231) (Thanks@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) (Thanks @vexx32!)
  • 数値リテラルの新しいサフィックスを追加しました - about_Numeric_Literals を参照してください (#7901) (感謝) @vexx32!)
  • SupportsShouldProcess が 'true' に設定されていない場合の影響レベルを正しく報告する (#8209) (感謝) @vexx32!)
  • Web コマンドレットでの要求文字セットの問題の修正 (#8742) (感謝) @markekraus!)
  • Web コマンドレットに関する問題 100-continue を修正する (#8679) (感謝) @markekraus!)
  • Web コマンドレットでのファイル のブロックの問題を修正する (#7676) (感謝) @Claustn!)
  • (#8694) のコード ページ解析の Invoke-RestMethod 問題を修正しました (Thanks @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) (Thanks @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) (Thanks @mklement0!)
  • scriptblock ベースの計算プロパティを (#8427) で ConvertTo-Html 再び機能させる (Thanks @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)
  • プラットフォームから New-PSDrivePersist パラメーターをnon-Windows削除する (#8291) (感謝)@lukexjeremy!)
  • (#7206) のサポートを cd + 追加する (感謝) @bergmeister!)
  • Set-Location -LiteralPath を - および+という名前のフォルダーで機能するようにします (#8089)
  • Test-Path は、 $false 空または $null パス値 (#8080) が指定されたときに返されます (Thanks @vexx32!)
  • パスがどのプロバイダーと一致しない場合でも、動的パラメーターが返されるようにします (#7957)
  • Unix プラットフォーム上で Get-PSHostProcessInfoEnter-PSHostProcess をサポートします (#8232)
  • コマンドレットの Get-Content 割り当てを減らす (#8103) (感謝) @iSazonov!)
  • コンテンツの書き込み中に Add-Content が他のツールと読み取りアクセスを共有できるようにします (#8091)
  • Get/Add-Content は、コンテナーを対象とする場合に改善されたエラーをスローします (#7823) (感謝 @kvprasoon!)
  • コマンドレットにパラメーターを -NoUserOverrides-ListAvailable追加-Nameする Get-Culture (#7702) (感謝)@iSazonov!)
  • Encoding パラメーターの補完用に統一された属性を追加します。 (#7732)( @ThreeFive-O!)
  • エンコード パラメーターで登録済みコード ページの数値 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!)