Windows, PowerShell ื•-Long Paths

Windows, PowerShell ื•-Long Paths

ืื ื™ ื—ื•ืฉื‘ ืฉื’ื ืืชื”, ื›ืžื•ื ื™, ืจืื™ืช ื ืชื™ื‘ื™ื ื›ืืœื” ื™ื•ืชืจ ืžืคืขื ืื—ืช !!! ื—ืฉื•ื‘____ื—ื“ืฉ____!!! ืื™ืŸ ืœืžื—ื•ืง!!! ื”ื–ืžื ื” ืžืก' 98819-649-B ืžื™ื•ื 30 ืขืœ ืžื™ื ื•ื™ื• ืฉืœ ืื™ื‘ืŸ ืืœื›ืกื ื“ืจื•ื‘ื™ืฅ' ืงื•ื–ืœื•ื‘ ืœืชืคืงื™ื“ ืžืžืœื ืžืงื•ื ื–ืžื ื™ ืฉืœ ืจืืฉ ื”ืžื—ืœืงื” ืœืชืžื™ื›ื” ื‘ืœืงื•ื—ื•ืช VIP ืืจื’ื•ื ื™ื™ื ื•ืืจื’ื•ืŸ ืคื’ื™ืฉื•ืช ืขืกืงื™ื•ืช ื‘ืฆื“.doc.

ื•ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืœื ืชื•ื›ืœ ืœืคืชื•ื— ืžืกืžืš ื›ื–ื” ื‘-Windows ืžื™ื“. ื™ืฉ ืื ืฉื™ื ืฉืžืชืจื’ืœื™ื ืคื™ืชืจื•ืŸ ื‘ืฆื•ืจื” ืฉืœ ืžื™ืคื•ื™ ื“ื™ืกืง, ืื—ืจื™ื ืžืฉืชืžืฉื™ื ื‘ืžื ื”ืœื™ ืงื‘ืฆื™ื ืฉื™ื›ื•ืœื™ื ืœืขื‘ื•ื“ ืขื ื ืชื™ื‘ื™ื ืืจื•ื›ื™ื: Far Manager, Total Commander ื•ื›ื“ื•ืžื”. ื•ืจื‘ื™ื ื ื•ืกืคื™ื ืฆืคื• ื‘ืขืฆื‘ ื‘ืชืกืจื™ื˜ ื”-PS ืฉื™ืฆืจื•, ืฉื”ื•ืฉืงืขื” ื‘ื• ืขื‘ื•ื“ื” ืจื‘ื” ื•ืืฉืจ ืขื‘ื“ ื‘ืจืขืฉ ื‘ืกื‘ื™ื‘ืช ื”ืžื‘ื—ืŸ, ื‘ืกื‘ื™ื‘ืช ื”ืคืงื” ื”ืชืœื•ื ื ื• ื—ืกืจ ืื•ื ื™ื ืขืœ ืžืฉื™ืžื” ื‘ืœืชื™ ืืคืฉืจื™ืช: ื”ื ืชื™ื‘ ืฉืฆื•ื™ืŸ, ืฉื ื”ืงื•ื‘ืฅ ืื• ืฉื ื™ื”ื ืืจื•ื›ื™ื ืžื“ื™. ืฉื ื”ืงื•ื‘ืฅ ื”ืžื•ืกืžืš ื‘ืžืœื•ืื• ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืคื—ื•ืช ืž- 260 ืชื•ื•ื™ื ื•ืฉื ื”ืกืคืจื™ื™ื” ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืคื—ื•ืช ืž -248 ืชื•ื•ื™ื.
ื›ืคื™ ืฉืžืชื‘ืจืจ, 260 ืชื•ื•ื™ื ืžืกืคื™ืงื™ื "ืœื ืจืง ืœื›ื•ืœื". ืื ืืชื ืžืขื•ื ื™ื™ื ื™ื ืœื—ืจื•ื’ ืžื’ื‘ื•ืœื•ืช ื”ืžื•ืชืจ, ื ื ืœืคื ื•ืช ืœื—ืชื•ืœ.

ื”ื ื” ืจืง ื—ืœืง ืžื”ื”ืฉืœื›ื•ืช ื”ืžืฆืขืจื•ืช ืฉืœ ื”ื’ื‘ืœืช ืื•ืจืš ื ืชื™ื‘ ื”ืงื•ื‘ืฅ:

ื‘ืกื˜ื™ื™ื” ืงืœื” ืžื”ื ื•ืฉื, ืื ื™ ืžืฆื™ื™ืŸ ืฉื‘ืฉื›ืคื•ืœ DFS ื”ื‘ืขื™ื” ื”ื ื“ื•ื ื” ื‘ืžืืžืจ ืื™ื ื” ื ื•ืจืื” ื•ืงื‘ืฆื™ื ืขื ืฉืžื•ืช ืืจื•ื›ื™ื ืขื•ื‘ืจื™ื ื‘ื”ืฆืœื—ื” ืžืฉืจืช ืœืฉืจืช (ืื, ื›ืžื•ื‘ืŸ, ื›ืœ ื”ืฉืืจ ื”ื•ื ื ืขืฉื” ื ื›ื•ืŸ).

ื‘ืจืฆื•ื ื™ ื’ื ืœื”ืคื ื•ืช ืืช ืชืฉื•ืžืช ืœื‘ื›ื ืœื›ืœื™ ืขื–ืจ ืฉื™ืžื•ืฉื™ ืžืื•ื“ ืฉืขื–ืจ ืœื™ ื™ื•ืชืจ ืžืคืขื ืื—ืช robocopy. ื”ื™ื ื’ื ืœื ืžืคื—ื“ืช ืžืฉื‘ื™ืœื™ื ืืจื•ื›ื™ื, ื•ื”ื™ื ื™ื›ื•ืœื” ืœืขืฉื•ืช ื”ืจื‘ื”. ืœื›ืŸ, ืื ื”ืžืฉื™ืžื” ืžืกืชื›ืžืช ื‘ื”ืขืชืงื”/ื”ืขื‘ืจืช ื ืชื•ื ื™ ืงื‘ืฆื™ื, ืืชื” ื™ื›ื•ืœ ืœืขืฆื•ืจ ืฉื. ืื ืืชื” ืฆืจื™ืš ืœืขืฉื•ืช ื˜ืจื™ืงื™ื ืขื ืจืฉื™ืžื•ืช ื‘ืงืจืช ื’ื™ืฉื” ืœืžืขืจื›ืช ืงื‘ืฆื™ื (DACLs), ื”ื‘ื˜ ื”ืฆื™ื“ื” subinacl. ืœืžืจื•ืช ื’ื™ืœื• ื”ืžืชืงื“ื, ื”ื•ื ืคืขืœ ืžืฆื•ื™ืŸ ื‘-Windows 2012 R2. ื›ืืŸ ืฉื™ื˜ื•ืช ื”ื™ื™ืฉื•ื ื ืœืงื—ื•ืช ื‘ื—ืฉื‘ื•ืŸ.

ื”ืชืขื ื™ื™ื ืชื™ ืœืœืžื“ ืื™ืš ืœืขื‘ื•ื“ ืขื ื ืชื™ื‘ื™ PowerShell ืืจื•ื›ื™ื. ืื™ืชื• ื–ื” ื›ืžืขื˜ ื›ืžื• ื‘ื‘ื“ื™ื—ื” ืžื–ื•ืงืŸ ืขืœ ืื™ื‘ืŸ ืฆืืจื‘ื™ืฅ' ื•-ื•ืกื™ืœื™ืกื” ื”ื™ืคื”.

ื“ืจืš ืžื”ื™ืจื”

ืขื‘ื•ืจ ืœืœื™ื ื•ืงืก ื•ืืœ ืชื“ืื’ ืœื’ื‘ื™ Windows 10/2016/2019 ื•ื”ืคืขืœ ืืช ื”ื’ื“ืจืช ื”ืžื“ื™ื ื™ื•ืช ื”ืงื‘ื•ืฆืชื™ืช ื”ืžืชืื™ืžื”/ื”ืชืืžืช ื”ืจื™ืฉื•ื. ืœื ืืชืขื›ื‘ ืขืœ ืฉื™ื˜ื” ื–ื• ื‘ืคื™ืจื•ื˜, ื›ื™... ื›ื‘ืจ ื™ืฉ ื”ืจื‘ื” ืžืืžืจื™ื ื‘ื ื•ืฉื ื–ื” ื‘ืื™ื ื˜ืจื ื˜, ืœืžืฉืœ, ื–ื”.

ื‘ื”ืชื—ืฉื‘ ื‘ื›ืš ืฉืœืจื•ื‘ ื”ื—ื‘ืจื•ืช ื™ืฉ ื”ืจื‘ื”, ื‘ืœืฉื•ืŸ ื”ืžืขื˜ื”, ืœื ืืช ื”ื’ืจืกืื•ืช ื”ืขื“ื›ื ื™ื•ืช ื‘ื™ื•ืชืจ ืฉืœ ืžืขืจื›ื•ืช ื”ืคืขืœื”, ืฉื™ื˜ื” ื–ื• ืžื”ื™ืจื” ืจืง ืœื›ืชื™ื‘ื” ืขืœ ื ื™ื™ืจ, ืืœื ืื ื›ืŸ, ื›ืžื•ื‘ืŸ, ืืชื” ืื—ื“ ืžืื•ืชื ื‘ืจื™ ื”ืžื–ืœ ืฉื™ืฉ ืœื”ื ืžืขื˜ ืžืขืจื›ื•ืช ืžื“ื•ืจ ืงื•ื“ื ื•-Windows 10 /2016/2019 ืฉื•ืœื˜ .

ื”ื“ืจืš ื”ืืจื•ื›ื”

ื‘ื•ืื• ื ืขืฉื” ื›ืืŸ ืžื™ื™ื“ ื”ืกืชื™ื™ื’ื•ืช ืฉื”ืฉื™ื ื•ื™ื™ื ืœื ื™ืฉืคื™ืขื• ืขืœ ื”ื”ืชื ื”ื’ื•ืช ืฉืœ Windows Explorer, ืืœื ื™ืืคืฉืจื• ืœื”ืฉืชืžืฉ ื‘ื ืชื™ื‘ื™ื ืืจื•ื›ื™ื ื‘-cmdlets ืฉืœ PowerShell, ื›ืžื• Get-Item, Get-ChildItem, Remove-Item ื•ื›ื•'.

ืจืืฉื™ืช, ื‘ื•ืื• ื ืขื“ื›ืŸ ืืช PowerShell. ื–ื” ื ืขืฉื” ืคืขื ืื—ืช, ืฉืชื™ื™ื, ืฉืœื•ืฉ ืคืขืžื™ื.

  1. ืื ื• ืžืขื“ื›ื ื™ื ืืช .NET Framework ืœื’ืจืกื” ืœื ื ืžื•ื›ื” ืž-4.5. ืžืขืจื›ืช ื”ื”ืคืขืœื” ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ืœืคื—ื•ืช Windows 7 SP1/2008 R2. ืืชื” ื™ื›ื•ืœ ืœื”ื•ืจื™ื“ ืืช ื”ื’ืจืกื” ื”ื ื•ื›ื—ื™ืช ื›ืืŸ, ืงืจื ืžื™ื“ืข ื ื•ืกืฃ ื›ืืŸ.
  2. ื”ื•ืจื“ ื•ื”ืชืงืŸ ืืช Windows Management Framework 5.1
  3. ืื ื—ื ื• ืžืืชื—ืœื™ื ืืช ื”ืžื›ื•ื ื”.

ืื ืฉื™ื ื—ืจื•ืฆื™ื ื™ื›ื•ืœื™ื ืœื‘ืฆืข ืืช ื”ืฉืœื‘ื™ื ื”ืžืชื•ืืจื™ื ืœืขื™ืœ ื‘ืื•ืคืŸ ื™ื“ื ื™, ืื ืฉื™ื ืขืฆืœื ื™ื ื™ื›ื•ืœื™ื ืœืขืฉื•ืช ื–ืืช ื‘ืขื–ืจืช SCCM, ืžื“ื™ื ื™ื•ืช, ืกืงืจื™ืคื˜ื™ื ื•ื›ืœื™ ืื•ื˜ื•ืžืฆื™ื” ืื—ืจื™ื.

ื ื™ืชืŸ ืœืžืฆื•ื ืืช ื”ื’ืจืกื” ื”ื ื•ื›ื—ื™ืช ืฉืœ PowerShell ืžื”ืžืฉืชื ื” $PSVersionTable. ืœืื—ืจ ื”ืขื“ื›ื•ืŸ ื–ื” ืืžื•ืจ ืœื”ื™ืจืื•ืช ื‘ืขืจืš ื›ืš:

Windows, PowerShell ื•-Long Paths

ื›ืขืช ื‘ืขืช ืฉื™ืžื•ืฉ ื‘-cmdlets Get-ChildItem ื•ื›ื“ื•ืžื” ื‘ืžืงื•ื ื”ืจื’ื™ืœ ื ืชื™ื‘ ืื ื—ื ื• ื ืฉืชืžืฉ ืœื™ื˜ืจืœPath.

ืคื•ืจืžื˜ ื”ื ืชื™ื‘ ื™ื”ื™ื” ืฉื•ื ื” ื‘ืžืงืฆืช:

Get-ChildItem -LiteralPath "?C:Folder"
Get-ChildItem -LiteralPath "?UNCServerNameShare"
Get-ChildItem -LiteralPath "?UNC192.168.0.10Share"

ืœื ื•ื—ื•ืช ื”ืžืจืช ื ืชื™ื‘ื™ื ืžื”ืคื•ืจืžื˜ ื”ืจื’ื™ืœ ืœืคื•ืจืžื˜ ืœื™ื˜ืจืœPath ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” ื”ื–ื•:

Function ConvertTo-LiteralPath 
Param([parameter(Mandatory=$true, Position=0)][String]$Path)
    If ($Path.Substring(0,2) -eq "") {Return ("?UNC" + $Path.Remove(0,1))}
    Else {Return "?$Path"}
}

ืฉื™ืžื• ืœื‘ ื›ื™ ื‘ืขืช ื”ื’ื“ืจืช ื”ืคืจืžื˜ืจ ืœื™ื˜ืจืœPath ืืชื” ืœื ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืชื•ื•ื™ื ื›ืœืœื™ื™ื (*, ? ื•ื›ืŸ ื”ืœืื”).

ื‘ื ื•ืกืฃ ืœืคืจืžื˜ืจ ืœื™ื˜ืจืœPath, ื‘ื’ืจืกื” ื”ืžืขื•ื“ื›ื ืช ืฉืœ PowerShell cmdlet Get-ChildItem ืงื™ื‘ืœ ืืช ื”ืคืจืžื˜ืจ ืขื•ืžืง, ืฉื‘ืืžืฆืขื•ืชื• ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืืช ืขื•ืžืง ื”ืงื™ื ื•ืŸ ืœื—ื™ืคื•ืฉ ืจืงื•ืจืกื™ื‘ื™, ื”ืฉืชืžืฉืชื™ ื‘ื• ื›ืžื” ืคืขืžื™ื ื•ื”ื™ื™ืชื™ ืžืจื•ืฆื”.

ืขื›ืฉื™ื• ืืชื” ืœื ืฆืจื™ืš ืœื“ืื•ื’ ืฉืกืงืจื™ืคื˜ ื”-PS ืฉืœืš ื™ืฉืชื•ื‘ื‘ ื‘ื“ืจืš ื”ืงื•ืฆื ื™ืช ื”ืืจื•ื›ื” ื•ืœื ื™ื•ื›ืœ ืœืจืื•ืช ืงื‘ืฆื™ื ืžืจื•ื—ืงื™ื. ืœื“ื•ื’ืžื”, ื’ื™ืฉื” ื–ื• ืขื–ืจื” ืœื™ ืžืื•ื“ ื‘ืขืช ื›ืชื™ื‘ืช ืกืงืจื™ืคื˜ ืœืื™ืคื•ืก ื”ืชื›ื•ื ื” "ื–ืžื ื™ืช" ืฉืœ ืงื‘ืฆื™ื ื‘ืชื™ืงื™ื•ืช DFSR. ืื‘ืœ ื–ื” ืกื™ืคื•ืจ ืื—ืจ, ืฉืื ืกื” ืœืกืคืจ ื‘ืžืืžืจ ืื—ืจ. ืื ื™ ืžืฆืคื” ืœืชื’ื•ื‘ื•ืช ืžืขื ื™ื™ื ื•ืช ืžืžืš ื•ืžืฆื™ืข ืœืš ืœื”ืฉืชืชืฃ ื‘ืกืงืจ.

ืงื™ืฉื•ืจื™ื ืฉื™ืžื•ืฉื™ื™ื:
docs.microsoft.com/ru-ru/dotnet/api/microsoft.powershell.commands.contentcommandbase.literalpath?view=powershellsdk-1.1.0
docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-5.1
stackoverflow.com/questions/46308030/handling-path-too-long-exception-with-new-psdrive/46309524
luisabreu.wordpress.com/2013/02/15/theliteralpath-parameter

ืจืง ืžืฉืชืžืฉื™ื ืจืฉื•ืžื™ื ื™ื›ื•ืœื™ื ืœื”ืฉืชืชืฃ ื‘ืกืงืจ. ืœื”ืชื—ื‘ืจื‘ื‘ืงืฉื”.

ื”ืื ื‘ืขื™ื™ืช ื”ืฉื‘ื™ืœื™ื ื”ืืจื•ื›ื™ื ืจืœื•ื•ื ื˜ื™ืช ืขื‘ื•ืจืš?

  • ื›ืŸ

  • ื”ื™ื” ืจืœื•ื•ื ื˜ื™, ืื‘ืœ ื›ื‘ืจ ื”ื•ื—ืœื˜

  • ื–ื” ืžืคืจื™ืข, ืื‘ืœ ืœื ื”ืจื‘ื”

  • ืœื ื—ืฉื‘ืชื™ ืขืœ ื–ื”, ื ืจืื” ืฉื”ื›ืœ ืขื•ื‘ื“

  • ืœื

  • ืื—ืจ (ื ื ืœืฆื™ื™ืŸ ื‘ื”ืขืจื•ืช)

155 ืžืฉืชืžืฉื™ื ื”ืฆื‘ื™ืขื•. 25 ืžืฉืชืžืฉื™ื ื ืžื ืขื•.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”