Windows Server 2008 R2 VMで、 Get-ChildItem(gci)のパフォーマンスの向上を利用することを期待して、PowerShellをv3にアップグレードしました。この行は、v2ではエラーなしで実行されました。
$search = gci $dir -recurse -exclude "*.mdf" | where {$_.length -gt 100mb}
v3にアップグレードした後、同じ行でこのエラーが発生するのはなぜですか?$dir
値は変更されません。
gci:指定されたパス、ファイル名、またはその両方が長すぎます。完全修飾ファイル名は260文字未満である必要があり、ディレクトリ名は248文字未満である必要があります。行:1文字:11 + $ search = gci $ dir -recurse -exclude "* .mdf" | ここで、{$_。length-gt 100mb} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:ReadError: (\ server.domain ... DETAILS 1.0.prt:String)[Get-ChildItem]、PathTooLongException + FullyQualifiedErrorId:DirIOError、Microsoft.PowerShell.Commands.GetChildItemCommand
Windows Updateを適用して再起動した後も、変更はありません。PowerShellをアップグレードする前にVMのスナップショットを撮ったので、簡単に切り替えることができます。
$errorActionPreference
v2とContinue
v3の両方にあります。
$search.count
v2とv3の両方で8なので、不足しているものについてはあまり心配していませんが、動作の変化を理解したいと思います。
v2で追加を試みたところ-force
、同様のPathTooLongエラーが発生し、.count
10でした。v3で追加-force
した後、 .count
9でした。その後、v2に戻り、再び10個のファイルが見つかりました-force
。それでも、下のデータを変更すること$dir
で違いを説明できる可能性.count
はありますが、私たちの環境では、データを変更しても、v3ではPathTooLongエラーが一貫して存在することを現実的に説明できませんでしたが、v2では説明できませんでした。私の好奇心が良くなった今、誰かがこの謎を先導し、エラー処理を免れることを望んでいます。それは、私が認める、より多くの手がかりを提供するかもしれません。
FWIW、TechNetの使用法のドキュメントには、v2とv3の両方に適用されると記載されています。-Force
パラメータのデフォルト値はFalseです。
PowerShellとMAX_PATH
v1の時代からの背景。
Windows Server 2008 R2 VMで、 Get-ChildItem(gci)のパフォーマンスの向上を利用することを期待して、PowerShellをv3にアップグレードしました。この行は、v2ではエラーなしで実行されました。
$search = gci $dir -recurse -exclude "*.mdf" | where {$_.length -gt 100mb}
v3にアップグレードした後、同じ行でこのエラーが発生するのはなぜですか?$dir
値は変更されません。
gci:指定されたパス、ファイル名、またはその両方が長すぎます。完全修飾ファイル名は260文字未満である必要があり、ディレクトリ名は248文字未満である必要があります。行:1文字:11 + $ search = gci $ dir -recurse -exclude "* .mdf" | ここで、{$_。length-gt 100mb} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:ReadError: (\ server.domain ... DETAILS 1.0.prt:String)[Get-ChildItem]、PathTooLongException + FullyQualifiedErrorId:DirIOError、Microsoft.PowerShell.Commands.GetChildItemCommand
Windows Updateを適用して再起動した後も、変更はありません。PowerShellをアップグレードする前にVMのスナップショットを撮ったので、簡単に切り替えることができます。
$errorActionPreference
v2とContinue
v3の両方にあります。
$search.count
v2とv3の両方で8なので、不足しているものについてはあまり心配していませんが、動作の変化を理解したいと思います。
v2で追加を試みたところ-force
、同様のPathTooLongエラーが発生し、.count
10でした。v3で追加-force
した後、 .count
9でした。その後、v2に戻り、再び10個のファイルが見つかりました-force
。それでも、下のデータを変更すること$dir
で違いを説明できる可能性.count
はありますが、私たちの環境では、データを変更しても、v3ではPathTooLongエラーが一貫して存在することを現実的に説明できませんでしたが、v2では説明できませんでした。私の好奇心が良くなった今、誰かがこの謎を先導し、エラー処理を免れることを望んでいます。それは、私が認める、より多くの手がかりを提供するかもしれません。
FWIW、TechNetの使用法のドキュメントには、v2とv3の両方に適用されると記載されています。-Force
パラメータのデフォルト値はFalseです。
PowerShellとMAX_PATH
v1の時代からの背景。