Windows, PowerShell, a Llwybrau Hir

Windows, PowerShell, a Llwybrau Hir

Rwy'n meddwl eich bod chi, fel fi, wedi gweld llwybrau fel hyn fwy nag unwaith !!! Pwysig____ Newydd____!!! Gorchymyn Rhif 98819-649-B dyddiedig Chwefror 30, 1985 ar benodiad Ivan Aleksandrovich Kozlov fel pennaeth dros dro yr adran ar gyfer cefnogi cleientiaid corfforaethol VIP a threfnu cyfarfodydd busnes ar y cyrion.doc.

Ac yn aml ni fyddwch yn gallu agor dogfen o'r fath yn Windows ar unwaith. Mae rhai pobl yn ymarfer atebion ar ffurf mapio disg, mae eraill yn defnyddio rheolwyr ffeiliau a all weithio gyda llwybrau hir: Rheolwr Pell, Total Commander ac ati. Ac roedd llawer mwy yn gwylio gyda thristwch wrth i’r sgript PS y gwnaethant ei chreu, y buddsoddwyd llawer o waith ynddi ac a oedd yn gweithio gyda chlec yn yr amgylchedd prawf, mewn amgylchedd cynhyrchu gwyno’n ddiymadferth am dasg amhosibl: Mae'r llwybr penodedig, enw'r ffeil, neu'r ddau yn rhy hir. Rhaid i'r enw ffeil cwbl gymwys fod yn llai na 260 nod, a rhaid i enw'r cyfeiriadur fod yn llai na 248 nod.
Fel mae'n digwydd, mae 260 o gymeriadau yn ddigon “nid i bawb yn unig.” Os oes gennych ddiddordeb mewn mynd y tu hwnt i ffiniau'r hyn a ganiateir, cyfeiriwch at y gath.

Dyma rai o ganlyniadau anffodus cyfyngu hyd llwybr ffeil:

Gan wyro ychydig o'r pwnc, nodaf ar gyfer DFS Replication nad yw'r broblem a drafodir yn yr erthygl yn ofnadwy a bod ffeiliau ag enwau hir yn teithio'n llwyddiannus o weinydd i weinydd (os, wrth gwrs, mae popeth arall gwneud yn iawn).

Hoffwn hefyd dynnu eich sylw at ddefnyddioldeb defnyddiol iawn sydd wedi fy helpu fwy nag unwaith roboteipio. Nid yw hi ychwaith yn ofni llwybrau hir, a gall wneud llawer. Felly, os yw'r dasg yn dibynnu ar gopïo / trosglwyddo data ffeil, gallwch chi stopio yno. Os oes angen i chi chwarae triciau gyda rhestrau rheoli mynediad system ffeiliau (DACLs), edrychwch i ffwrdd subinacl. Er gwaethaf ei oedran datblygedig, perfformiodd yn rhagorol ar Windows 2012 R2. Yma dulliau ymgeisio yn cael eu hystyried.

Roedd gen i ddiddordeb mewn dysgu sut i weithio gyda llwybrau PowerShell hir. Gydag ef mae bron fel mewn jôc barfog am Ivan Tsarevich a Vasilisa the Beautiful.

Ffordd gyflym

Newid i Linux a pheidiwch â phoeni am Windows 10/2016/2019 a galluogi'r gosodiad polisi grŵp priodol / tweak y gofrestrfa. Ni fyddaf yn canolbwyntio ar y dull hwn yn fanwl, oherwydd ... Mae yna lawer o erthyglau ar y pwnc hwn ar y Rhyngrwyd eisoes, er enghraifft, hwn.

O ystyried bod gan y rhan fwyaf o gwmnïau lawer, i'w nodi'n ysgafn, nid y fersiynau diweddaraf o systemau gweithredu, dim ond ar gyfer ysgrifennu ar bapur y mae'r dull hwn yn gyflym, oni bai, wrth gwrs, eich bod yn un o'r rhai ffodus hynny sydd ag ychydig o systemau etifeddiaeth a Windows 10 /2016/2019 yn teyrnasu goruchaf .

Y ffordd bell

Gadewch i ni archebu ar unwaith yma na fydd y newidiadau'n effeithio ar ymddygiad Windows Explorer, ond y byddant yn ei gwneud hi'n bosibl defnyddio llwybrau hir mewn cmdlets PowerShell, fel Get-Item, Get-ChildItem, Remove-Item, ac ati.

Yn gyntaf, gadewch i ni ddiweddaru PowerShell. Mae'n cael ei wneud un, dwy, tair gwaith.

  1. Rydym yn diweddaru'r Fframwaith .NET i fersiwn heb fod yn is na 4.5. Rhaid i'r system weithredu fod o leiaf Windows 7 SP1/2008 R2. Gallwch chi lawrlwytho'r fersiwn gyfredol yma, darllen mwy o wybodaeth yma.
  2. Lawrlwytho a gosod Windows Management Framework 5.1
  3. Rydym yn ailgychwyn y peiriant.

Gall pobl weithgar wneud y camau a ddisgrifir uchod â llaw, gall pobl ddiog ei wneud gyda chymorth SCCM, polisïau, sgriptiau ac offer awtomeiddio eraill.

Gellir dod o hyd i'r fersiwn gyfredol o PowerShell o'r newidyn $PSVersionTable. Ar ôl y diweddariad dylai edrych yn rhywbeth fel hyn:

Windows, PowerShell, a Llwybrau Hir

Nawr wrth ddefnyddio cmdlets Get-ChildItem a'r cyffelyb yn lle yr arferol Llwybr byddwn yn defnyddio llythrennolLlwybr.

Bydd fformat y llwybr ychydig yn wahanol:

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

Er hwylustod trosi llwybrau o'r fformat arferol i'r fformat llythrennolLlwybr gallwch ddefnyddio'r swyddogaeth hon:

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"}
}

Sylwch wrth osod y paramedr llythrennolLlwybr Ni allwch ddefnyddio cardiau gwyllt (*, ? ac yn y blaen).

Yn ogystal â'r paramedr llythrennolLlwybr, yn y fersiwn wedi'i diweddaru o PowerShell cmdlet Get-ChildItem cael y paramedr Dyfnder, y gallwch chi osod y dyfnder nythu ar gyfer chwiliad ailadroddus, fe'i defnyddiais ychydig o weithiau ac roeddwn yn fodlon.

Nawr does dim rhaid i chi boeni y bydd eich sgript PS yn mynd ar gyfeiliorn ar hyd y llwybr pigog hir ac na fydd yn gallu gweld ffeiliau pell. Er enghraifft, fe wnaeth y dull hwn fy helpu llawer wrth ysgrifennu sgript i ailosod priodoledd “dros dro” ffeiliau mewn ffolderi DFSR. Ond stori arall yw honno, y byddaf yn ceisio ei hadrodd mewn erthygl arall. Edrychaf ymlaen at sylwadau diddorol gennych ac awgrymaf eich bod yn cymryd yr arolwg.

Dolenni defnyddiol:
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

Dim ond defnyddwyr cofrestredig all gymryd rhan yn yr arolwg. Mewngofnodios gwelwch yn dda.

A yw problem llwybrau hir yn berthnasol i chi?

  • Oes

  • Yn berthnasol, ond wedi penderfynu eisoes

  • Mae'n ymyrryd, ond dim llawer

  • Wnes i ddim meddwl am y peth, mae'n ymddangos bod popeth yn gweithio

  • Dim

  • Arall (nodwch yn y sylwadau)

Pleidleisiodd 155 o ddefnyddwyr. Ataliodd 25 o ddefnyddwyr.

Ffynhonnell: hab.com

Ychwanegu sylw