Windows, PowerShell, lan Long Paths

Windows, PowerShell, lan Long Paths

Aku sampeyan, kaya aku, wis kerep ndeleng dalan saka wangun !!! Penting____Anyar____!!! Aja mbusak!!! No. Pesenan 98819-649-B tanggal 30 Februari 1985 babagan janjian Ivan Aleksandrovich Kozlov minangka kepala akting departemen kanggo ndhukung klien VIP perusahaan lan ngatur rapat bisnis ing sidelines.doc.

Lan asring sampeyan ora bakal bisa mbukak dokumen kasebut ing Windows langsung. Ana sing nglakokake solusi ing bentuk pemetaan disk, ana sing nggunakake manajer file sing bisa mlaku kanthi dalan sing dawa: Manajer Tebih, Panglima Total lan liya-liyane. Lan akeh liyane sedih mirsani carane skrip PS digawe, kang akeh karya wis nandur modhal lan makarya karo bang ing lingkungan test, ing lingkungan pertempuran, helplessly ngeluh bab tugas mokal: Path sing ditemtokake, jeneng berkas, utawa loro-lorone dawa banget. Jeneng berkas sing mumpuni kudu kurang saka 260 karakter, lan jeneng direktori kudu kurang saka 248 karakter.
Ternyata, 260 karakter cukup "ora mung kanggo kabeh wong." Yen sampeyan kasengsem ing ngluwihi wates apa diijini, Aku takon ing cat.

Ing ngisor iki mung sawetara akibat sing ora nyenengake kanggo mbatesi dawa path file:

Rada nyimpang saka topik, aku nyathet yen kanggo Replikasi DFS, masalah sing dianggep ing artikel kasebut ora nggegirisi lan file kanthi jeneng dawa sukses lelungan saka server menyang server (kajaba, mesthi, yen sampeyan rampung bener).

Aku uga pengin narik kawigaten marang sarana sing migunani banget sing wis mbantu aku luwih saka sepisan robocopy. Dheweke uga ora wedi karo dalan sing dawa, lan dheweke ngerti akeh. Mulane, yen tugas teka kanggo nyalin / nransfer data file, sampeyan bisa mungkasi ing. Yen sampeyan kudu kekacoan karo dhaptar kontrol akses sistem file (DACLs), katon adoh subinacl. Senadyan umur owahan sawijining, iku nuduhake dhewe sampurna ing Windows 2012 R2. kene cara aplikasi dianggep.

Aku uga kasengsem sinau carane bisa karo dalan PowerShell dawa. Kanthi dheweke, meh kaya ing guyon janggut babagan Ivan Tsarevich lan Vasilisa the Beautiful.

Cara cepet

Ngalih menyang Linux lan aja padha sumelang ing Windows 10/2016/2019 lan aktifake setelan kabijakan grup / registri tweak. Aku ora bakal manggon ing cara iki ing rinci, amarga. wis ana akeh artikel ing net babagan topik iki, contone, iki.

Ngelingi sing ing paling perusahaan ana akeh, kanggo sijine iku mildly, ora versi seger saka sistem operasi, cara iki cepet mung kanggo nulis ing kertas, kajaba, mesthi, sampeyan salah siji sing gedhe-gedhe begja sing duwe sawetara sistem warisan lan Windows. 10/2016/2019.

dalan dawa

Ing kene kita langsung nggawe reservasi yen owah-owahan ora bakal mengaruhi prilaku Windows Explorer, nanging bakal ngidini sampeyan nggunakake dalan dawa ing cmdlet PowerShell, kayata Get-Item, Get-ChildItem, Remove-Item, lsp.

Pisanan, ayo nganyari PowerShell. Wis rampung siji, loro, telu.

  1. Kita nganyari .NET Framework menyang versi paling ora 4.5. Sistem operasi kudu paling sethithik Windows 7 SP1/2008 R2. Versi saiki bisa diundhuh kenemaca informasi liyane kene.
  2. Ngundhuh lan nginstal Windows Management Framework 5.1
  3. Kita urip maneh mesin.

Sing kerja keras bisa nindakake langkah-langkah ing ndhuwur kanthi manual, sing kesed bisa nindakake kanthi bantuan SCCM, kabijakan, skrip lan alat otomatis liyane.

Versi saiki PowerShell bisa ditemokake saka variabel $PSVersionTable. Sawise nganyari kudu katon kaya iki:

Windows, PowerShell, lan Long Paths

Saiki nalika nggunakake cmdlet Get-ChildItem lan liyane kaya dheweke tinimbang biasane Path kita bakal nggunakake literalPath.

Format path bakal rada beda:

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

Kanggo penak ngowahi path saka format biasanipun menyang format literalPath sampeyan bisa nggunakake fungsi iki:

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

Elinga yen nalika nyetel parameter literalPath wildcard ora bisa digunakake (*, ? lsp)

Saliyane parameter literalPath, ing cmdlet PowerShell sing dianyari Get-ChildItem ditampa parameter Ambane, karo sampeyan bisa nyetel ambane nesting kanggo panelusuran rekursif, Aku digunakake kaping pindho lan wareg.

Saiki sampeyan ora bisa wedi yen PS-skrip sampeyan bakal kesasar saka dalan sing dawa lan ora bakal weruh file sing adoh. Contone, pendekatan iki mbantu aku akeh nalika nulis skrip kanggo ngreset atribut "sementara" kanggo file ing folder DFSR. Nanging iki crita liyane, sing bakal dakkandhakake ing artikel liyane. Aku ngenteni komentar menarik saka sampeyan lan aku nyaranake njupuk survey.

Link migunani:
docs.microsoft.com/en-us/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/parameter-theliteralpath

Mung pangguna pangguna sing bisa melu survey. mlebunggih.

Apa masalah dalan sing dawa cocog karo sampeyan?

  • Ya

  • Wis relevan, nanging wis mutusake

  • Interferes, nanging ora akeh

  • Ora kepikiran, kabeh katon mlaku

  • Ora

  • Liyane (sebutake ing komentar)

155 pangguna milih. 25 kedhaftar abstained.

Source: www.habr.com

Add a comment