Виндовс, ПоверСһелл и дуге путање

Виндовс, ПоверСһелл и дуге путање

Мислим да сте и ви, као и ја, видели овакве стазе више пута !!! Важно____Ново____!!! Не брисати Наредба бр.98819-649-Б од 30 о именовању Ивана Александровича Козлова за привременог вршиоца дужности шефа одељења за подршку корпоративним ВИП клијентима и организовање пословних састанака на маргинама.доц.

И често нећете моћи одмах да отворите такав документ у Виндовс-у. Неки људи практикују решење у виду мапирања диска, други користе менаџере датотека који могу да раде са дугим путевима: Фар Манагер, Тотал Цоммандер и слично. И многи су са тугом гледали како ПС сценарио који су креирали, у који је уложено много труда и који је у тестном окружењу радио са праском, у продукцијском окружењу беспомоћно жалио на немогућ задатак: Наведена путања, име датотеке или оба су предугачка. Потпуно квалификовано име датотеке мора бити мање од 260 знакова, а име директоријума мора бити мање од 248 знакова.
Како се испоставило, 260 знакова је довољно „не само за свакога“. Ако сте заинтересовани да пређете границе дозвољеног, обратите се мачку.

Ево само неких од несрећних последица ограничавања дужине путање датотеке:

Мало одступајући од теме, напомињем да за ДФС репликацију проблем о коме се говори у чланку није страшан и датотеке са дугим именима успешно путују са сервера на сервер (ако је, наравно, све остало урађено како треба).

Такође бих желео да вам скренем пажњу на веома користан услужни програм који ми је више пута помогао робоцопи. Такође се не плаши дугих путева, а може много. Стога, ако се задатак своди на копирање/преношење података о фајлу, можете стати на томе. Ако треба да играте трикове са листама за контролу приступа систему датотека (ДАЦЛ), скренете поглед субинацл. Упркос поодмаклој старости, одлично се показао на Виндовс 2012 Р2. Овде разматрају се начини примене.

Био сам заинтересован да научим како да радим са дугим ПоверСхелл путањама. Са њим је скоро као у брадатом виц о Ивану Царевичу и Василиси Лепој.

Брзи начин

Пређите на Линук и не брините за Виндовс 10/2016/2019 и омогућите одговарајућу поставку групних политика/подесите регистар. Нећу се детаљније задржавати на овој методи, јер... Већ постоји много чланака на ову тему на Интернету, нпр. ово.

С обзиром да већина компанија има много, најблаже речено, не најновијих верзија оперативних система, овај метод је брз само за писање на папиру, осим ако, наравно, нисте један од оних срећника који имају мало старих система и Виндовс 10 /2016/2019 царује .

Дуг пут

Хајде да одмах резервишемо овде да промене неће утицати на понашање Виндовс Екплорер-а, али ће омогућити коришћење дугих путања у ПоверСхелл цмдлетима, као што су Гет-Итем, Гет-ЦхилдИтем, Ремове-Итем, итд.

Прво, хајде да ажурирамо ПоверСхелл. Ради се један, два, три пута.

  1. Ажурирамо .НЕТ Фрамеворк на верзију не нижу од 4.5. Оперативни систем мора да буде најмање Виндовс 7 СП1/2008 Р2. Можете преузети тренутну верзију овде, прочитајте више информација овде.
  2. Преузми и инсталирајте Виндовс Манагемент Фрамеворк 5.1
  3. Поново покрећемо машину.

Вредни људи могу да ураде горе описане кораке ручно, лењи људи могу то да ураде уз помоћ СЦЦМ-а, политика, скрипти и других алата за аутоматизацију.

Тренутна верзија ПоверСхелл-а може се пронаћи из променљиве $ПСВерсионТабле. Након ажурирања требало би да изгледа отприлике овако:

Виндовс, ПоверСһелл и дуге путање

Сада када користите цмдлете Гет-ЦхилдИтем и слично уместо уобичајеног Путања користићемо ЛитералПатх.

Формат путање ће бити мало другачији:

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

За практичност претварања путања из уобичајеног формата у формат ЛитералПатх можете користити ову функцију:

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

Имајте на уму да приликом подешавања параметра ЛитералПатх Не можете користити џокере (*, ? и тако даље).

Поред параметра ЛитералПатх, у ажурираној верзији ПоверСхелл цмдлета Гет-ЦхилдИтем добио параметар Дубина, са којим можете подесити дубину гнежђења за рекурзивну претрагу, користио сам га пар пута и био сам задовољан.

Сада не морате да бринете да ће ваша ПС скрипта залутати дуж дугог трновитог пута и неће моћи да види удаљене датотеке. На пример, овај приступ ми је много помогао при писању скрипте за ресетовање „привременог“ атрибута датотека у ДФСР фасциклама. Али то је друга прича, коју ћу покушати да испричам у другом чланку. Радујем се вашим интересантним коментарима и предлажем да попуните анкету.

Корисни линкови:
доцс.мицрософт.цом/ру-ру/дотнет/апи/мицрософт.поверсхелл.цоммандс.цонтентцоммандбасе.литералпатх?виев=поверсхеллсдк-1.1.0
доцс.мицрософт.цом/ен-ус/поверсхелл/модуле/мицрософт.поверсхелл.манагемент/гет-цхилдитем?виев=поверсхелл-5.1
стацковерфлов.цом/куестионс/46308030/хандлинг-патх-тоо-лонг-екцептион-витх-нев-псдриве/46309524
луисабреу.вордпресс.цом/2013/02/15/тхелитералпатх-параметер

Само регистровани корисници могу учествовати у анкети. Пријавите се, Добродошао си.

Да ли је проблем дугих путева релевантан за вас?

  • Да

  • Било је релевантно, али већ одлучено

  • Омета, али не много

  • Нисам размишљао о томе, изгледа да све функционише

  • Не

  • Остало (наведите у коментарима)

Гласало је 155 корисника. Уздржано је било 25 корисника.

Извор: ввв.хабр.цом

Додај коментар