Windows, PowerShell dhe Shtigjet e gjata

Windows, PowerShell dhe Shtigjet e gjata

Unë mendoj se ju, si unë, keni parë shtigje të tilla më shumë se një herë !!! E rëndësishme____E re____!!! Mos e fshini!!!Urdhër nr.98819-649-B datë 30 për emërimin e Ivan Aleksandrovich Kozlov si ushtrues detyre të përkohshëm drejtues të departamentit për mbështetjen e klientëve VIP të korporatave dhe organizimin e takimeve të biznesit në mënjanë.doc.

Dhe shpesh nuk do të jeni në gjendje të hapni një dokument të tillë në Windows menjëherë. Disa njerëz praktikojnë zgjidhje në formën e hartës së diskut, të tjerë përdorin menaxherë skedarësh që mund të punojnë me shtigje të gjata: Far Manager, Total Commander dhe të ngjashme. Dhe shumë të tjerë ndoqën me trishtim se si skenari i PS-së që ata krijuan, në të cilin u investua shumë punë dhe që funksionoi me zhurmë në mjedisin e testimit, në një mjedis produksioni ankohej pafuqishëm për një detyrë të pamundur: Rruga e specifikuar, emri i skedarit ose të dyja janë shumë të gjata. Emri i skedarit plotësisht të kualifikuar duhet të jetë më pak se 260 karaktere dhe emri i drejtorisë duhet të jetë më pak se 248 karaktere.
Siç rezulton, 260 karaktere janë të mjaftueshme "jo vetëm për të gjithë". Nëse jeni të interesuar të shkoni përtej kufijve të asaj që është e lejuar, ju lutemi referojuni maces.

Këtu janë vetëm disa nga pasojat fatkeqe të kufizimit të gjatësisë së shtegut të skedarit:

Duke u larguar pak nga tema, vërej se për përsëritjen e DFS problemi i diskutuar në artikull nuk është i tmerrshëm dhe skedarët me emra të gjatë udhëtojnë me sukses nga serveri në server (nëse, sigurisht, gjithçka tjetër është bërë si duhet).

Do të doja gjithashtu të tërhiqja vëmendjen tuaj për një mjet shumë të dobishëm që më ka ndihmuar më shumë se një herë robokopi. Ajo gjithashtu nuk ka frikë nga shtigjet e gjata dhe mund të bëjë shumë. Prandaj, nëse detyra përfundon në kopjimin/transferimin e të dhënave të skedarit, mund të ndaloni atje. Nëse keni nevojë të luani mashtrime me listat e kontrollit të aksesit të sistemit të skedarëve (DACL), shikoni larg nënenacl. Pavarësisht nga mosha e tij e avancuar, ai performoi shkëlqyeshëm në Windows 2012 R2. Këtu merren parasysh metodat e aplikimit.

Isha i interesuar të mësoja se si të punoja me shtigje të gjata PowerShell. Me të është pothuajse si në një shaka me mjekër për Ivan Tsarevich dhe Vasilisa Bukuroshja.

Mënyrë e shpejtë

Kaloni në Linux dhe mos u shqetësoni për Windows 10/2016/2019 dhe aktivizoni cilësimin e duhur të politikës së grupit/ndryshoni regjistrin. Unë nuk do të ndalem në këtë metodë në detaje, sepse ... Tashmë ka shumë artikuj mbi këtë temë në internet, për shembull, kjo.

Duke marrë parasysh që shumica e kompanive kanë shumë, për ta thënë butë, jo versionet më të fundit të sistemeve operative, kjo metodë është e shpejtë vetëm për të shkruar në letër, përveç nëse, sigurisht, jeni një nga ata me fat që keni pak sisteme të trashëguara dhe Windows 10. /2016/2019 mbretëron suprem.

Rruga e gjatë

Le të bëjmë menjëherë një rezervë këtu që ndryshimet nuk do të ndikojnë në sjelljen e Windows Explorer, por do të bëjnë të mundur përdorimin e shtigjeve të gjata në cmdlet të PowerShell, si Get-Item, Get-ChildItem, Remove-Item, etj.

Së pari, le të përditësojmë PowerShell. Është bërë një, dy, tre herë.

  1. Ne përditësojmë .NET Framework në versionin jo më të ulët se 4.5. Sistemi operativ duhet të jetë së paku Windows 7 SP1/2008 R2. Mund të shkarkoni versionin aktual këtu, lexoni më shumë informacion këtu.
  2. Shkarko The dhe instaloni Windows Management Framework 5.1
  3. Ne e rindisim makinën.

Njerëzit punëtorë mund t'i bëjnë hapat e përshkruar më sipër me dorë, njerëzit dembelë mund ta bëjnë këtë me ndihmën e SCCM, politikave, skripteve dhe mjeteve të tjera të automatizimit.

Versioni aktual i PowerShell mund të gjendet nga ndryshorja $PSVersionTable. Pas përditësimit duhet të duket diçka si kjo:

Windows, PowerShell dhe Shtigjet e gjata

Tani kur përdorni cmdlet Merrni-ChildItem dhe të ngjashme në vend të të zakonshmes Rrugë ne do të përdorim Literal Path.

Formati i rrugës do të jetë paksa i ndryshëm:

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

Për lehtësinë e konvertimit të shtigjeve nga formati i zakonshëm në format Literal Path mund të përdorni këtë funksion:

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

Ju lutemi vini re se kur vendosni parametrin Literal Path Ju nuk mund të përdorni karaktere të egra (*, ? dhe kështu me radhë).

Përveç parametrit Literal Path, në versionin e përditësuar të PowerShell cmdlet Merrni-ChildItem mori parametrin Thellësi, me të cilin mund të vendosni thellësinë e foleve për kërkimin rekurziv, e përdora disa herë dhe mbeta i kënaqur.

Tani nuk duhet të shqetësoheni se skripti juaj PS do të devijojë përgjatë rrugës së gjatë me gjemba dhe nuk do të jetë në gjendje të shohë skedarë të largët. Për shembull, kjo qasje më ndihmoi shumë kur shkruaja një skenar për të rivendosur atributin "të përkohshëm" të skedarëve në dosjet DFSR. Por kjo është një histori tjetër, të cilën do të përpiqem ta tregoj në një artikull tjetër. Pres komente interesante nga ju dhe ju sugjeroj të merrni pjesë në sondazh.

Lidhje të dobishme:
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

Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. Hyni, te lutem

A është problemi i shtigjeve të gjata i rëndësishëm për ju?

  • Po

  • Ishte e rëndësishme, por tashmë e vendosur

  • Ndërhyn, por jo shumë

  • Nuk e kam menduar, gjithçka duket se po funksionon

  • Jo

  • Të tjera (ju lutemi specifikoni në komente)

155 përdorues votuan. 25 përdorues abstenuan.

Burimi: www.habr.com

Shto një koment