PowerShell Core 6.0 の重要な変更Breaking Changes for PowerShell 6.0

PowerShell Core で使用できなくなった機能Features no longer available in PowerShell Core

PowerShell ワークフローPowerShell Workflow

PowerShell ワークフロー is a feature in Windows PowerShell that builds on top of Windows Workflow Foundation (WF)、長時間実行中のタスクまたは並行化されたタスクに対して堅牢な Runbook を作成できるようにします。PowerShell Workflow is a feature in Windows PowerShell that builds on top of Windows Workflow Foundation (WF) that enables the creation of robust runbooks for long-running or parallelized tasks.

.NET Core では Windows Workflow Foundation がサポートされていないため、PowerShell Core の PowerShell ワークフローのサポートを終了します。Due to the lack of support for Windows Workflow Foundation in .NET Core, we will not continue to support PowerShell Workflow in PowerShell Core.

今後、PowerShell ワークフローを必要としない、PowerShell 言語でのネイティブの並列処理とコンカレンシーが可能になる予定です。In the future, we would like to enable native parallelism/concurrency in the PowerShell language without the need for PowerShell Workflow.

カスタム スナップインCustom snap-ins

PowerShell スナップインは、PowerShell モジュールの前身ですが、PowerShell コミュニティではあまり使用されていません。PowerShell snap-ins are a predecessor to PowerShell modules that do not have widespread adoption in the PowerShell community.

スナップインのサポートは複雑であり、コミュニティ内での普及率が低いことから、PowerShell Core でのカスタム スナップインのサポートを終了します。Due to the complexity of supporting snap-ins and their lack of usage in the community, we no longer support custom snap-ins in PowerShell Core.

現時点では、Windows および Windows Server 内の ActiveDirectory および DnsClient モジュールに影響します。Today, this breaks the ActiveDirectory and DnsClient modules in Windows and Windows Server.

WMI v1 コマンドレットWMI v1 cmdlets

WMI ベースの 2 つのモジュール セットをサポートすることは複雑になるため、PowerShell Core から WMI v1 コマンドレットが削除されました。Due to the complexity of supporting two sets of WMI-based modules, we removed the WMI v1 cmdlets from PowerShell Core:

  • Get-WmiObject
  • Invoke-WmiMethod
  • Register-WmiEvent
  • Set-WmiInstance

これに代わり、新しい機能や再設計された構文を含み、同じ機能を提供する CIM (別名 WMI v2) コマンドレットを使用することをお勧めします。Instead, we recommend that you the use the CIM (aka WMI v2) cmdlets which provide the same functionality with new functionality and a redesigned syntax:

  • Get-CimAssociatedInstance
  • Get-CimClass
  • Get-CimInstance
  • Get-CimSession
  • Invoke-CimMethod
  • New-CimInstance
  • New-CimSession
  • New-CimSessionOption
  • Register-CimIndicationEvent
  • Remove-CimInstance
  • Remove-CimSession
  • Set-CimInstance

Microsoft.PowerShell.LocalAccountsMicrosoft.PowerShell.LocalAccounts

サポートされていない API を使用していることから、より優れたソリューションが提供されるまで、PowerShell Core から Microsoft.PowerShell.LocalAccounts コマンドレットを削除します。Due to the use of unsupported APIs, Microsoft.PowerShell.LocalAccounts has been removed from PowerShell Core until a better solution is found.

*-Computer コマンドレット*-Computer cmdlets

以下のコマンドレットは、サポートされていない API が使われているため、より優れたソリューションが提供されるまで PowerShell Core から削除されます。Due to the use of unsupported APIs, the following cmdlets have been removed from PowerShell Core until a better solution is found.

  • Add-ComputerAdd-Computer
  • Checkpoint-ComputerCheckpoint-Computer
  • Remove-ComputerRemove-Computer
  • Restore-ComputerRestore-Computer

*-Counter コマンドレット*-Counter cmdlets

サポートされていない API を使用していることから、より優れたソリューションが提供されるまで、PowerShell Core から *-Counter コマンドレットを削除します。Due to the use of unsupported APIs, the *-Counter has been removed from PowerShell Core until a better solution is found.

*-EventLog コマンドレット*-EventLog cmdlets

サポートされていない API を使用しているため、より優れたソリューションが提供されるまで、PowerShell Core から *-EventLog コマンドレットを削除していますDue to the use of unsupported APIs, the *-EventLog has been removed from PowerShell Core. until a better solution is found. Get-WinEventCreate-WinEvent を使用すると、Windows でイベントを取得および作成することができます。Get-WinEvent and Create-WinEvent are available to get and create events on Windows.

エンジンおよび言語の変更Engine/language changes

名前 powershell.exepwsh.exe に変更 #5101Rename powershell.exe to pwsh.exe #5101

ユーザーが (Windows PowerShell ではなく) Windows 上で PowerShell Core を確実な方法で呼び出せるよう、PowerShell Core のバイナリが Windows では pwsh.exe に、Windows 以外のプラットフォームでは pwsh に変更されました。In order to give users a deterministic way to call PowerShell Core on Windows (as opposed to Windows PowerShell), the PowerShell Core binary was changed to pwsh.exe on Windows and pwsh on non-Windows platforms.

短い形式の名前も、Windows 以外のプラットフォーム上のシェルの名前形式と同じになるように設定されています。The shortened name is also consistent with naming of shells on non-Windows platforms.

出力 (テーブル以外) に改行を挿入できない。#5193Don't insert line breaks to output (except for tables) #5193

以前は、コンソールの幅に合わせて出力が調整され、コンソールの幅の終端に改行が追加されていたため、ターミナルのサイズが変更されると、想定外の形式になることがありました。Previously, output was aligned to the width of the console and line breaks were added at the end width of the console, meaning the output didn't get reformatted as expected if the terminal was resized. 今回の変更は、列の整列に改行が必要なため、テーブルには適用されていませんでした。This change was not applied to tables, as the line breaks are necessary to keep the columns aligned.

要素の型が値型のコレクションの null 要素チェックを省略 #5432Skip null-element check for collections with a value-type element type #5432

Mandatoryパラメーターと ValidateNotNull および ValidateNotNullOrEmpty 属性について、コレクションの要素の型が値型の場合に null 要素チェックを省略します。For the Mandatory parameter and ValidateNotNull and ValidateNotNullOrEmpty attributes, skip the null-element check if the collection's element type is value type.

ASCIIではなく UTF-8 NoBOM エンコードを使用するよう $OutputEncoding を変更 #5369Change $OutputEncoding to use UTF-8 NoBOM encoding rather than ASCII #5369

以前のエンコード、ASCII (7 ビット) を使用すると、出力が不適切に変更される場合があります。The previous encoding, ASCII (7-bit), would result in incorrect alteration of the output in some cases. 今回の変更では、UTF-8 NoBOM が既定値となり、ほとんどのツールおよびオペレーティング システムでサポートされているエンコードを使用して Unicode 出力を保持します。This change is to make UTF-8 NoBOM default, which preserves Unicode output with an encoding supported by most tools and operating systems.

大部分の既定エイリアスから AllScope を削除 #5268Remove AllScope from most default aliases #5268

スコープの作成を高速化するために、大部分の既定エイリアスから AllScope が削除されました。To speed up scope creation, AllScope was removed from most default aliases. 検索が高速化できる使用頻度の高いいくつかのエイリアスでは AllScope のままになっています。AllScope was left for a few frequently used aliases where the lookup was faster.

-Verbose および -Debug による $ErrorActionPreference のオーバーライドの終了 #5113-Verbose and -Debug no longer overrides $ErrorActionPreference #5113

以前は、-Verbose または -Debug が指定された場合、それにより $ErrorActionPreference の動作がオーバーライドされていました。Previously, if -Verbose or -Debug were specified, it overrode the behavior of $ErrorActionPreference. 今回の変更により、-Verbose および -Debug$ErrorActionPreference の動作に影響を与えることはなくなります。With this change, -Verbose and -Debug no longer affect the behavior of $ErrorActionPreference.

コマンドレットの変更Cmdlet changes

データが返されない場合、Invoke-RestMethod により、有益な情報が返されないInvoke-RestMethod doesn't return useful info when no data is returned. #5320#5320

API が null のみを返す場合、Invoke-restmethod は、これを $null ではなく、文字列 "null" としてシリアル化していました。When an API returns just null, Invoke-RestMethod was serializing this as the string "null" instead of $null. 今回の変更により、有効なシングル値 JSON null がリテラル $null として正しくシリアル化されるよう、Invoke-RestMethod のロジックが修正されました。This change fixes the logic in Invoke-RestMethod to properly serialize a valid single value JSON null literal as $null.

*-Computer コマンドレットから -Protocol を削除 #5277Remove -Protocol from *-Computer cmdlets #5277

CoreFX の RPC リモート処理 (特に Windows 以外のプラットフォームで) の問題と、PowerShell で一貫性のあるリモート処理エクスペリエンスを保証するため、\*-Computer コマンドレットから -Protocol パラメーターが削除されました。Due to issues with RPC remoting in CoreFX (particularly on non-Windows platforms) and ensuring a consistent remoting experience in PowerShell, the -Protocol parameter was removed from the \*-Computer cmdlets. リモート処理では DCOM がサポートされなくなりました。DCOM is no longer supported for remoting. 次のコマンドレットでは、WSMAN リモート処理のみをサポートします。The following cmdlets only support WSMAN remoting:

  • Rename-ComputerRename-Computer
  • Restart-ComputerRestart-Computer
  • Stop-ComputerStop-Computer

*-Service コマンドレットから -ComputerName を削除 #5090Remove -ComputerName from *-Service cmdlets #5090

一貫性のある PSRP の使用を促進するために、*-Service コマンドレットから -ComputerName パラメーターが削除されました。In order to encourage the consistent use of PSRP, the -ComputerName parameter was removed from *-Service cmdlets.

a*b が実際に存在しない場合は、エラーを返すよう Get-Item -LiteralPath a*b を修正 #5197Fix Get-Item -LiteralPath a*b if a*b doesn't actually exist to return error #5197

以前は、ワイルドカードを渡された -LiteralPath-Path と同様に処理され、ワイルドカードを使ってファイルが検出されない場合は、何も返さず終了していました。Previously, -LiteralPath given a wildcard would treat it the same as -Path and if the wildcard found no files, it would silently exit. 正しい動作として、ファイルが存在しない場合はエラーを返すには、-LiteralPath はリテラルである必要があります。Correct behavior should be that -LiteralPath is literal so if the file doesn't exist, it should error. -Literal にワイルドカードを使用した場合、リテラルとして処理するよう変更されました。Change is to treat wildcards used with -Literal as literal.

インポート時に CSV に型情報が存在する場合、Import-CsvPSTypeNames を適用 #5134Import-Csv should apply PSTypeNames upon import when type information is present in the CSV #5134

以前は、ConvertFrom-Csv を使用してインポートされた TypeInformation を含む Export-CSV を使用してオブジェクトをエクスポートすると、型情報が保持されませんでした。Previously, objects exported using Export-CSV with TypeInformation imported with ConvertFrom-Csv were not retaining the type information. 今回の変更により、CSV ファイルから使用可能な場合は PSTypeNames メンバーに型情報が追加されます。This change adds the type information to PSTypeNames member if available from the CSV file.

-NoTypeInformation の既定値を Export-Csv に設定 #5131-NoTypeInformation should be default on Export-Csv #5131

お客様からの声を反映して、Export-CSV の既定の動作として型情報を含めるよう変更されました。This change was made to address customer feedback on the default behavior of Export-CSV to include type information.

以前は、コマンドレットから、オブジェクトの型名を含む最初の行としてコメントが出力されていました。Previously, the cmdlet would output a comment as the first line containing the type name of the object. ほとんどのツールでは認識されないため、既定ではこれを抑制されるよう変更されています。The change is to suppress this by default as it's not understood by most tools. 以前の動作のままにするには、-IncludeTypeInformation を使用してください。Use -IncludeTypeInformation to retain the previous behavior.

暗号化されていない接続経由で -Credential が送信された場合に、Web コマンドレットが警告 #5112Web Cmdlets should warn when -Credential is sent over unencrypted connections #5112

HTTP を使用する場合、パスワードなどのコンテンツはクリア テキストとして送信されます。When using HTTP, content including passwords are sent as clear-text. 今回の変更は、これを既定で許可しないようにするもので、資格情報が安全でない方法で渡されると、エラーを返します。This change is to not allow this by default and return an error if credentials are being passed in an insecure manner. -AllowUnencryptedAuthentication スイッチを使用すると、この動作を無効にできます。Users can bypass this by using the -AllowUnencryptedAuthentication switch.

API の変更API changes

AddTypeCommandBase クラスを削除 #5407Remove AddTypeCommandBase class #5407

パフォーマンス向上のため、Add-Type から AddTypeCommandBase クラスが削除されました。The AddTypeCommandBase class was removed from Add-Type to improve performance. このクラスは、Add-Type コマンドレットでのみ使用されており、ユーザーに影響はありません。This class is only used by the Add-Type cmdlet and should not impact users.

コマンドレットと -Encoding パラメーターを System.Text.Encoding 型に統合 #5080Unify cmdlets with parameter -Encoding to be of type System.Text.Encoding #5080

-Encoding の値 Byteはファイルシステム プロバイダーのコマンドレットから削除されました。The -Encoding value Byte has been removed from the filesystem provider cmdlets. 新しいパラメーター -AsByteStream を使用して、入力としてバイト ストリームが必要なこと、あるいは出力がバイト ストリームであることを指定してください。A new parameter, -AsByteStream, is now used to specify that a byte stream is required as input or that the output is a stream of bytes.

-UFormat パラメーターが空または null の場合に、改善されたエラー メッセージを追加 #5055Add better error message for empty and null -UFormat parameter #5055

以前は、-UFormat に空の形式の文字列が渡されると、有益でないエラー メッセージが表示されていました。Previously, when passing an empty format string to -UFormat, an unhelpful error message would appear. よりわかりやすいエラーが追加されました。A more descriptive error has been added.

コンソール コードをクリーンアップ #4995Clean up console code #4995

-psconsolefile スイッチおよびコード、-importsystemmodules スイッチおよびコード、およびフォントの変更コードは、レガシーの Windows PowerShell のために存在し、PowerShell Core でサポートされておらず、今後もサポートを追加する予定がないため、削除されました。The following features were removed as they are not supported in PowerShell Core, and there are no plans to add support as they exist for legacy reasons for Windows PowerShell: -psconsolefile switch and code, -importsystemmodules switch and code, and font changing code.

RunspaceConfiguration のサポートを終了 #4942Removed RunspaceConfiguration support #4942

以前は、API を使用してプログラミングによって PowerShell 実行空間を作成する場合、レガシーの RunspaceConfiguration or the newer InitialSessionState を使用できました。Previously, when creating a PowerShell runspace programmatically using the API you could use the legacy RunspaceConfiguration or the newer InitialSessionState. 今回の変更により RunspaceConfiguration のサポートが終了し、InitialSessionState のみがサポートされます。This change removed support for RunspaceConfiguration and only supports InitialSessionState.

CommandInvocationIntrinsics.InvokeScript が引数を $args ではなく $input にバインド #4923CommandInvocationIntrinsics.InvokeScript bind arguments to $input instead of $args #4923

引数内のパラメーターの位置が正しくないため、引数ではなく入力として渡されていました。An incorrect position of a parameter resulted in the args passed as input instead of as args.

サポートされていなかった -showwindow スイッチを Get-Help から削除 #4903Remove unsupported -showwindow switch from Get-Help #4903

-showwindow では、CoreCLR でサポートされていない、WPF を使用します。-showwindow relies on WPF, which is not supported on CoreCLR.

Remove-Item のレジストリ パスで * が使用可能に #4866Allow * to be used in registry path for Remove-Item #4866

以前は、ワイルドカードを渡された -LiteralPath-Path と同様に処理され、ワイルドカードを使ってファイルが検出されない場合は、何も返さず終了していました。Previously, -LiteralPath given a wildcard would treat it the same as -Path and if the wildcard found no files, it would silently exit. 正しい動作として、ファイルが存在しない場合はエラーを返すには、-LiteralPath はリテラルである必要があります。Correct behavior should be that -LiteralPath is literal so if the file doesn't exist, it should error. -Literal にワイルドカードを使用した場合、リテラルとして処理するよう変更されました。Change is to treat wildcards used with -Literal as literal.

テストで失敗していた Set-Service を修正 #4802Fix Set-Service failing test #4802

以前は、New-Service -StartupType foo を使用している場合、foo は無視され、既定のスタートアップ タイプを使用して、サービスが作成されていました。Previously, if New-Service -StartupType foo was used, foo was ignored and the service was created with some default startup type. 今回の変更により、無効なスタートアップ タイプの場合は、エラーが明示的にスローされます。This change is to explicitly throw an error for an invalid startup type.

$IsOSX の名前を $IsMacOS に変更 #4700Rename $IsOSX to $IsMacOS #4700

PowerShell の名前付けが Microsoft の名前規則に準拠し、OSX ではなく Apple の macOS が使用する名前付け規則に準拠している必要があります。The naming in PowerShell should be consistent with our naming and conform to Apple's use of macOS instead of OSX. ただし、読みやすさと整合性の目的で、引き続き Pascal の形式に従っています。However, for readability and consistently we are staying with Pascal casing.

無効なスクリプトがファイルに渡されたときに一貫性のあるエラー メッセージを生成。あいまいな引数 が渡されたときのエラー表示を改善 #4573Make error message consistent when invalid script is passed to -File, better error when passed ambiguous argument #4573

pwsh.exe の終了コードを Unix の規則と一致するよう変更Change the exit codes of pwsh.exe to align with Unix conventions

Diagnostics モジュールから LocalAccount およびコマンドレットを削除Removal of LocalAccount and cmdlets from Diagnostics modules. #4302 #4303#4302 #4303

API がサポートされていないため、改善されたソリューションが発表されるまで、LocalAccounts モジュールと Diagnostics モジュールの Counterコマンドレットが削除されました。Due to unsupported APIs, the LocalAccounts module and the Counter cmdlets in the Diagnostics module were removed until a better solution is found.

ブール値のパラメーターを使用する PowerShell スクリプトが正しく動作しない #4036Executing PowerShell script with bool parameter does not work #4036

以前は、powershell.exe (現在は pwsh.exe) で -File を使用して PowerShell スクリプトを実行する場合、$true/$false をパラメーター値として渡すことができませんでした。Previously, using powershell.exe (now pwsh.exe) to execute a PowerShell script using -File provided no way to pass $true/$false as parameter values. 解析された値としての $true/$false パラメーターのサポートが追加されました。Support for $true/$false as parsed values to parameters was added. 現在、ドキュメントに記載されている構文が機能しないため、スイッチの値もサポートされます。Switch values are also supported as currently documented syntax doesn't work.

$PSVersionTable から ClrVersion プロパティを削除 #4027Remove ClrVersion property from $PSVersionTable #4027

$PSVersionTableClrVersion プロパティは CoreCLR では有用でないため、エンドユーザーは、互換性を判定するためにこの値を使用しないでください。The ClrVersion property of $PSVersionTable is not useful with CoreCLR, end users should not be using that value to determine compatibility.

powershell.exe の位置指定パラメーターを -Command から -File に変更 #4019Change positional parameter for powershell.exe from -Command to -File #4019

Windows 以外のプラットフォームでの PowerShell のシバン使用を有効化します。Enable shebang use of PowerShell on non-Windows platforms. Unix ベースのシステムでは、pwsh を明示的に呼び出すのではなく、自動的に PowerShell を起動するスクリプト実行可能ファイルを作成できます。This means on Unix based systems, you can make a script executable that would invoke PowerShell automatically rather than explicitly invoking pwsh. また、-File を指定せずに powershell foo.ps1 または powershell fooScript のようなコマンドを実行できます。This also means that you can now do things like powershell foo.ps1 or powershell fooScript without specifying -File. ただし、今回の変更後、powershell.exe Get-Command などのコマンドを実行しようとする場合は -c または -Command を明示的に指定する必要があります。However, this change now requires that you explicitly specify -c or -Command when trying to do things like powershell.exe Get-Command.

Unicode エスケープ解析の実装 #3958Implement Unicode escape parsing #3958

`u#### または `u{####} は対応する Unicode 文字に変換されます。`u#### or `u{####} is converted to the corresponding Unicode character. `u リテラルを出力するには、``u のように、グラーブ文字をエスケープします。To output a literal `u, escape the backtick: ``u.

Windows 以外のプラットフォームの New-ModuleManifest エンコーディングを UTF8NoBOM に変更 #3940Change New-ModuleManifest encoding to UTF8NoBOM on non-Windows platforms #3940

以前は、New-ModuleManifest は、BOM を使用して UTF-16 で psd1 マニフェストを作成しており、Linux ツールで問題が発生していました。Previously, New-ModuleManifest creates psd1 manifests in UTF-16 with BOM, creating a problem for Linux tools. 今回の重要な変更により、Windows 以外のプラットフォーム上の エンコーディング New-ModuleManifest が UTF (BOM なし) に変更されました。This breaking change changes the encoding of New-ModuleManifest to be UTF (no BOM) in non-Windows platforms.

今回の変更により、Get-ChildItem と Unix の ls -r や Windows の dir /s ネイティブ コマンドとの連携度が向上しました。This change brings Get-ChildItem more in line with the Unix ls -r and the Windows dir /s native commands. 上記のコマンドと同様、このコマンドレットでは、反復中に特定されたディレクトリへのシンボリック リンクが表示されますが、反復はされません。Like the mentioned commands, the cmdlet displays symbolic links to directories found during recursion, but does not recurse into them.

返された行に区切り文字が含まれないように Get-Content -Delimiter を修正 #3706Fix Get-Content -Delimiter to not include the delimiter in the returned lines #3706

以前は、Get-Content -Delimiter を使用したときの出力に一貫性がなく、区切り記号を削除するために追加のデータ処理が必要になり不便でした。Previously, the output while using Get-Content -Delimiter was inconsistent and inconvenient as it required further processing of the data to remove the delimiter. 今回の変更により、返される行の区切り記号が削除されます。This change removes the delimiter in returned lines.

Format-hex を C# で実装 #3320Implement Format-Hex in C# #3320

-Raw パラメーターは "no-op" になりました (なにも動作はしません)。The -Raw parameter is now a "no-op" (in that it does nothing). 今後は、その種類の数字のすべてのバイトを含め、数字がすべての出力に忠実に表示されます (今回の変更前は、-Raw パラメーターが正式にこの動作を実行していました)。Going forward all of the output will be displayed with a true representation of numbers that includes all of the bytes for its type (what the -Raw parameter was formally doing prior to this change).

既定シェルの PowerShell でスクリプト コマンドが正しく動作しない #3319PowerShell as a default shell doesn't work with script command #3319

Unix では、対話型のシェルで -i の入力を受け付けることが通常で、多くのツールでこの動作が前提とされ、スイッチ -i を使ってシェルを呼び出します (たとえば script や、PowerShell が既定のシェルに設定されている場合)。On Unix, it is a convention for shells to accept -i for an interactive shell and many tools expect this behavior (script for example, and when setting PowerShell as the default shell) and calls the shell with the -i switch. 以前は -inputformat と一致する便利な方法として -i を使用できましたが、この重要な変更後は -in を使用する必要があります。This change is breaking in that -i previously could be used as short hand to match -inputformat, which now needs to be -in.

Get-computerinfo プロパティ名の入力ミスを修正 #3167Typo fix in Get-ComputerInfo property name #3167

BiosSerialNumberBiosSeralNumber と誤記されていましたが、正しいスペルに変更されました。BiosSerialNumber was misspelled as BiosSeralNumber and has been changed to the correct spelling.

Get-StringHash および Get-FileHash コマンドレットを追加 #3024Add Get-StringHash and Get-FileHash cmdlets #3024

CoreFX でサポートされていないハッシュ アルゴリズムがありましたが、今回の変更により、使用できなくなりました。This change is that some hash algorithms are not supported by CoreFX, therefore they are no longer available:

  • MACTripleDES
  • RIPEMD160

$null を渡した場合、エラーではなくすべてのオブジェクトが返されるよう、Get-* コマンドレットに検証機能を追加 #2672Add validation on Get-* cmdlets where passing $null returns all objects instead of error #2672

次のコマンドに $null を渡すと、エラーがスローされるよう変更されました。Passing $null to any of the following now throws an error:

  • Get-Credential -UserName
  • Get-Event -SourceIdentifier
  • Get-EventSubscriber -SourceIdentifier
  • Get-Help -Name
  • Get-PSBreakpoint -Script
  • Get-PSProvider -PSProvider
  • Get-PSSessionConfiguration -Name
  • Get-PSSnapin -Name
  • Get-Runspace -Name
  • Get-RunspaceDebug -RunspaceName
  • Get-Service -Name
  • Get-TraceSource -Name
  • Get-Variable -Name
  • Get-WmiObject -Class
  • Get-WmiObject -Property

Import-Csv に W3C 拡張ログ ファイル形式のサポートを追加 #2482Add support W3C Extended Log File Format in Import-Csv #2482

以前は、Import-Csv コマンドレットを使用して、W3C 拡張ログ形式でログ ファイルを直接インポートできず、追加の操作が必要でした。Previously, the Import-Csv cmdlet cannot be used to directly import the log files in W3C extended log format and additional action would be required. 今回の変更により、W3C 拡張ログ形式がサポートされます。With this change, W3C extended log format is supported.

PS 関数の ValueFromRemainingArguments でのパラメーター バインドの問題 #2035Parameter binding problem with ValueFromRemainingArguments in PS functions #2035

ValueFromRemainingArguments は、それ自体が配列である単一の値ではなく、値を配列として返すよう変更されました。ValueFromRemainingArguments now returns the values as an array instead of a single value which itself is an array.

$PSVersionTable から BuildVersion が削除されました。#1415BuildVersion is removed from $PSVersionTable #1415

$PSVersionTable から BuildVersion プロパティを削除してください。Remove the BuildVersion property from $PSVersionTable. このプロパティは、Windows のビルド バージョンと関連付けられていました。This property was tied to the Windows build version. 代わりに、GitCommitId を使用して、PowerShell Core の正確なビルド バージョンを取得することをお勧めします。Instead, we recommend that you use GitCommitId to retrieve the exact build version of PowerShell Core.

Web のコマンドレットへの変更Changes to Web Cmdlets

Web コマンドレットの基となる .NET API が System.Net.Http.HttpClient に変更されました。The underlying .NET API of the Web Cmdlets has been changed to System.Net.Http.HttpClient. この変更は、多くのメリットを提供します。This change provides many benefits. ただし、この変更と、Internet Explorer での相互運用性がないことを理由として、Invoke-WebRequestInvoke-RestMethodに重要な変更が加えられました。However, this change along with a lack of interoperability with Internet Explorer have resulted in several breaking changes within Invoke-WebRequest and Invoke-RestMethod.

  • Invoke-WebRequest では、基本的な HTML 解析のみがサポートされます。Invoke-WebRequest now supports basic HTML Parsing only. Invoke-WebRequest は常に BasicHtmlWebResponseObject オブジェクトを返します。Invoke-WebRequest always returns a BasicHtmlWebResponseObject object. ParsedHtml および Forms プロパティが削除されました。The ParsedHtml and Forms properties have been removed.
  • BasicHtmlWebResponseObject.Headers の値は String から String[] に変更されました。BasicHtmlWebResponseObject.Headers values are now String[] instead of String.
  • BasicHtmlWebResponseObject.BaseResponse は、System.Net.Http.HttpResponseMessage オブジェクトに変更されました。BasicHtmlWebResponseObject.BaseResponse is now a System.Net.Http.HttpResponseMessage object.
  • Web コマンドレットの例外の Response プロパティが、System.Net.Http.HttpResponseMessage オブジェクトに変更されました。The Response property on Web Cmdlet exceptions is now a System.Net.Http.HttpResponseMessage object.
  • -Headers および -UserAgent パラメーターの既定設定が、Strict RFC ヘッダー解析に変更されました。Strict RFC header parsing is now default for the -Headers and -UserAgent parameter. これは、-SkipHeaderValidation を使用して無効にできます。This can be bypassed with -SkipHeaderValidation.
  • file:// および ftp:// URI スキームのサポートは終了しました。file:// and ftp:// URI schemes are no longer supported.
  • System.Net.ServicePointManager 設定は使用できなくなります。System.Net.ServicePointManager settings are no longer honored.
  • 現在、macOS では、証明書を使用した認証は使用できません。There is currently no certificate based authentication available on macOS.
  • http:// URI 経由で -Credential を使用するとエラーになります。Use of -Credential over an http:// URI will result in an error. https:// URI を使用するか、または -AllowUnencryptedAuthenticationパラメーターを指定してエラーを回避してください。Use an https:// URI or supply the -AllowUnencryptedAuthentication parameter to suppress the error.
  • -MaximumRedirection では、指定された制限を超えようとすると、最後のリダイレクトの結果を返す代わりに、終了エラーが生成されるようになりました。-MaximumRedirection now produces a terminating error when redirection attempts exceed the provided limit instead of returning the results of the last redirection.