Windows, PowerShell, ak Long Paths

Windows, PowerShell, ak Long Paths

Mwen panse ke ou, tankou mwen, te wè chemen tankou sa a plis pase yon fwa !!! Enpòtan____Nouvo____!!! Pa efase!!! Lòd No sou randevou Ivan Aleksandrovich Kozlov kòm tèt tanporè aji nan depatman an pou sipòte kliyan antrepriz VIP ak òganize reyinyon biznis sou bò liy yo.doc.

Epi souvan ou pa pral kapab louvri tankou yon dokiman nan Windows touswit. Gen kèk moun ki pratike solisyon an nan fòm lan nan kat disk, lòt moun sèvi ak administratè dosye ki ka travay ak chemen long: Manadjè Far, Total Commander ak renmen an. Ak anpil lòt te gade ak tristès kòm script PS yo te kreye, nan ki yon anpil nan travay yo te envesti epi ki te travay ak yon bang nan anviwònman tès la, nan yon anviwònman pwodiksyon san sekou plenyen sou yon travay enposib: Chemen espesifye a, non fichye a, oswa toude yo twò long. Non fichye totalman kalifye a dwe mwens pase 260 karaktè, epi non anyè a dwe mwens pase 248 karaktè.
Kòm li sanble, 260 karaktè se ase "pa sèlman pou tout moun." Si w enterese ale pi lwen pase limit sa ki pèmèt, tanpri al gade chat la.

Men kèk nan konsekans malere lè limite longè chemen fichye a:

Diferans yon ti kras de sijè a, mwen remake ke pou DFS Replication pwoblèm nan diskite nan atik la se pa terib ak dosye ki gen non long avèk siksè vwayaje soti nan sèvè nan sèvè (si, nan kou, tout lòt bagay se fè byen).

Mwen ta renmen tou atire atansyon ou sou yon sèvis piblik trè itil ki te ede m 'soti plis pase yon fwa robokopi. Li pa pè tou pou chemen long, epi li ka fè anpil. Se poutèt sa, si travay la klou desann nan kopye / transfere done dosye, ou ka sispann la. Si ou bezwen jwe ke trik nouvèl ak lis kontwòl aksè sistèm dosye (DACLs), gade lwen subinacl. Malgre laj avanse li, li te fè ekselan sou Windows 2012 R2. Isit la metòd aplikasyon yo konsidere.

Mwen te enterese nan anseye kijan pou travay ak chemen PowerShell long. Avè l 'se prèske tankou nan yon blag bab sou Ivan Tsarevich ak Vasilisa bèl la.

Fason rapid

Chanje nan Linux epi pa enkyete w sou Windows 10/2016/2019 epi pèmèt anviwònman politik gwoup apwopriye / ajiste rejis la. Mwen pa pral rete sou metòd sa a an detay, paske ... Gen deja anpil atik sou sijè sa a sou entènèt la, pou egzanp, sa a.

Lè nou konsidere ke pifò konpayi yo gen anpil, pou mete li léjèrman, pa dènye vèsyon yo nan sistèm opere, metòd sa a rapid sèlman pou ekri sou papye, sof si, nan kou, ou se youn nan moun ki gen chans ki gen kèk sistèm eritaj ak Windows 10. /2016/2019 gouvènen siprèm .

Chemen an long

Se pou nou imedyatman fè yon rezèvasyon isit la ke chanjman yo pa pral afekte konpòtman an nan Windows Explorer, men yo pral fè li posib yo sèvi ak chemen long nan cmdlets PowerShell, tankou Get-Item, Get-ChildItem, Retire-Item, elatriye.

Premyèman, ann mete ajou PowerShell. Li fè youn-de-twa fwa.

  1. Nou mete ajou .NET Framework nan vèsyon ki pa pi ba pase 4.5. Sistèm operasyon an dwe omwen Windows 7 SP1/2008 R2. Ou ka telechaje vèsyon aktyèl la isit la, li plis enfòmasyon isit la.
  2. Telechaje epi enstale Windows Management Framework 5.1
  3. Nou rdemare machin nan.

Moun k ap travay di ka fè etap sa yo dekri pi wo a manyèlman, moun parese ka fè li avèk èd nan SCCM, politik, scripts ak lòt zouti automatisation.

Ou ka jwenn vèsyon aktyèl PowerShell nan varyab la $PSVersionTable. Apre aktyalizasyon a li ta dwe gade yon bagay tankou sa a:

Windows, PowerShell, ak Long Paths

Koulye a, lè w ap itilize cmdlets Jwenn-ChildItem ak tankou olye pou yo nòmal la Path nou pral itilize LiteralPath.

Fòma chemen an pral yon ti kras diferan:

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

Pou konvenyans nan konvèti chemen soti nan fòma nòmal la nan fòma a LiteralPath ou ka itilize fonksyon sa a:

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

Tanpri sonje ke lè w ap mete paramèt la LiteralPath Ou pa ka itilize joker (*, ? ak sou sa).

Anplis paramèt la LiteralPath, nan vèsyon ki ajou PowerShell cmdlet Jwenn-ChildItem te resevwa paramèt la Pwofondè, ak ki ou ka mete pwofondè an nidifikasyon pou rechèch repetitif, mwen te itilize li yon koup de fwa e li te satisfè.

Koulye a, ou pa bezwen enkyete ke script PS ou a pral pèdi wout sou chemen an pikan long epi yo pa yo pral kapab wè dosye byen lwen. Pa egzanp, apwòch sa a te ede m anpil lè m te ekri yon script pou réinitialiser atribi "tanporè" dosye ki nan dosye DFSR yo. Men, sa a se yon lòt istwa, ke mwen pral eseye rakonte nan yon lòt atik. Mwen tann kòmantè enteresan nan men ou epi sijere ou pran sondaj la.

Lyen itil:
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

Se sèlman itilizatè ki anrejistre ki ka patisipe nan sondaj la. Enskri, tanpri.

Èske pwoblèm nan nan chemen long ki enpòtan pou ou?

  • Да

  • Te enpòtan, men deja deside

  • Li entèfere, men se pa anpil

  • Mwen pa t 'reflechi sou li, tout bagay sanble ap travay

  • Pa gen

  • Lòt (tanpri presize nan kòmantè)

155 itilizatè yo te vote. 25 itilizatè te absteni.

Sous: www.habr.com

Add nouvo kòmantè