Windows, PowerShell, na Njia ndefu

Windows, PowerShell, na Njia ndefu

Nadhani wewe, kama mimi, umeona njia kama hii zaidi ya mara moja !!! Muhimu__Mpya____!!! Usifute!!! Agizo No. 98819-649-B la tarehe 30 Februari 1985 kwa kuteuliwa kwa Ivan Aleksandrovich Kozlov kama kaimu mkuu wa idara ya kusaidia wateja wa kampuni ya VIP na kuandaa mikutano ya biashara kwenye kando.doc..

Na mara nyingi hutaweza kufungua hati kama hiyo kwenye Windows mara moja. Watu wengine hufanya mazoezi ya kufanya kazi kwa njia ya ramani ya diski, wengine hutumia wasimamizi wa faili ambao wanaweza kufanya kazi na njia ndefu: Meneja wa Mbali, Kamanda wa Jumla na kadhalika. Na wengi zaidi walitazama kwa huzuni wakati hati ya PS waliyounda, ambayo kazi nyingi iliwekezwa na ambayo ilifanya kazi kwa kishindo katika mazingira ya majaribio, katika mazingira ya uzalishaji walilalamika bila msaada juu ya kazi isiyowezekana: Njia iliyobainishwa, jina la faili, au zote mbili ni ndefu sana. Jina la faili lililohitimu kikamilifu lazima liwe chini ya vibambo 260, na jina la saraka lazima liwe chini ya vibambo 248.
Kama inavyotokea, herufi 260 zinatosha "sio kwa kila mtu tu." Ikiwa una nia ya kwenda zaidi ya mipaka ya kile kinachoruhusiwa, tafadhali rejelea paka.

Hapa ni baadhi tu ya matokeo ya bahati mbaya ya kupunguza urefu wa njia ya faili:

Kujitenga kidogo kutoka kwa mada, ninaona kuwa kwa Replication ya DFS shida iliyojadiliwa katika kifungu sio mbaya na faili zilizo na majina marefu husafiri kwa mafanikio kutoka kwa seva hadi seva (ikiwa, kwa kweli, kila kitu kingine ni. kufanyika sawa).

Ningependa pia kuteka mawazo yako kwa matumizi muhimu sana ambayo yamenisaidia zaidi ya mara moja robocopy. Yeye pia haogopi njia ndefu, na anaweza kufanya mengi. Kwa hivyo, ikiwa kazi itapungua hadi kunakili / kuhamisha data ya faili, unaweza kuacha hapo. Ikiwa unahitaji kucheza hila na orodha za udhibiti wa ufikiaji wa mfumo wa faili (DACL), angalia mbali subinacl. Licha ya umri wake mkubwa, ilifanya vyema kwenye Windows 2012 R2. Hapa njia za maombi zinazingatiwa.

Nilikuwa na nia ya kufundisha jinsi ya kufanya kazi na njia ndefu za PowerShell. Pamoja naye ni karibu kama katika utani wa ndevu kuhusu Ivan Tsarevich na Vasilisa the Beautiful.

Njia ya haraka

Badili hadi Linux na usiwe na wasiwasi kuhusu Windows 10/2016/2019 na uwashe mipangilio ya sera ya kikundi/tweak sajili. Sitakaa juu ya njia hii kwa undani, kwa sababu ... Tayari kuna nakala nyingi kwenye mada hii kwenye wavuti, kwa mfano, hii.

Kwa kuzingatia kwamba makampuni mengi yana mengi, kuiweka kwa upole, sio matoleo ya hivi karibuni ya mifumo ya uendeshaji, njia hii ni ya haraka tu kwa kuandika kwenye karatasi, isipokuwa, bila shaka, wewe ni mmoja wa wale walio na bahati ambao wana mifumo michache ya urithi na Windows 10. /2016/2019 inatawala.

Njia ndefu

Hebu tuweke uhifadhi hapa mara moja kwamba mabadiliko hayataathiri tabia ya Windows Explorer, lakini itafanya iwezekane kutumia njia ndefu katika PowerShell cmdlets, kama vile Get-Item, Get-ChildItem, Remove-Item, nk.

Kwanza, hebu tusasishe PowerShell. Imefanywa mara moja, mbili, tatu.

  1. Tunasasisha .NET Framework hadi toleo lisilopungua 4.5. Mfumo wa uendeshaji lazima uwe angalau Windows 7 SP1/2008 R2. Unaweza kupakua toleo la sasa hapa, soma habari zaidi hapa.
  2. Pakua na usakinishe Mfumo wa Usimamizi wa Windows 5.1
  3. Tunaanzisha tena mashine.

Watu wanaofanya kazi kwa bidii wanaweza kufanya hatua zilizoelezwa hapo juu kwa mikono, watu wavivu wanaweza kufanya hivyo kwa msaada wa SCCM, sera, maandiko na zana nyingine za automatisering.

Toleo la sasa la PowerShell linaweza kupatikana kutoka kwa kutofautisha $PSVersionTable. Baada ya sasisho inapaswa kuonekana kama hii:

Windows, PowerShell, na Njia ndefu

Sasa unapotumia cmdlets Kupata-MtotoNio na mengine kama hayo badala ya kawaida Njia tutatumia Njia halisi.

Fomati ya njia itakuwa tofauti kidogo:

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

Kwa urahisi wa kubadilisha njia kutoka kwa umbizo la kawaida hadi umbizo Njia halisi unaweza kutumia kazi hii:

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

Tafadhali kumbuka kuwa wakati wa kuweka parameter Njia halisi Hauwezi kutumia kadi za mwitu (*, ? na kadhalika).

Mbali na parameter Njia halisi, katika toleo lililosasishwa la PowerShell cmdlet Kupata-MtotoNio nimepata kigezo Kina, ambayo unaweza kuweka kina cha kiota kwa utaftaji wa kujirudia, niliitumia mara kadhaa na nikaridhika.

Sasa huna haja ya kuwa na wasiwasi kwamba hati yako ya PS itapotea kwenye njia ndefu yenye miiba na haitaweza kuona faili za mbali. Kwa mfano, mbinu hii ilinisaidia sana wakati wa kuandika hati ili kuweka upya sifa ya "muda" ya faili kwenye folda za DFSR. Lakini hiyo ni hadithi nyingine, ambayo nitajaribu kuwaambia katika makala nyingine. Ninatarajia maoni ya kuvutia kutoka kwako na kukupendekeza ufanye uchunguzi.

Viungo muhimu:
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

Watumiaji waliojiandikisha pekee ndio wanaweza kushiriki katika utafiti. Weka sahihitafadhali.

Je, tatizo la njia ndefu ni muhimu kwako?

  • Π”Π°

  • Ilikuwa muhimu, lakini tayari imeamua

  • Inaingilia, lakini sio sana

  • Sikufikiria juu yake, kila kitu kinaonekana kufanya kazi

  • Hakuna

  • Nyingine (tafadhali taja katika maoni)

Watumiaji 155 walipiga kura. Watumiaji 25 walijizuia.

Chanzo: mapenzi.com

Kuongeza maoni