Ik denk dat jij, net als ik, dit soort paden meer dan eens hebt gezien !!! Belangrijk____Nieuw____!!! Niet verwijderen!Bestelnr. 98819-649-B gedateerd 30 februari 1985 over de benoeming van Ivan Aleksandrovich Kozlov als tijdelijk waarnemend hoofd van de afdeling voor het ondersteunen van zakelijke VIP-klanten en het organiseren van zakelijke bijeenkomsten aan de zijlijn.doc.
En vaak kun je zo’n document niet meteen in Windows openen. Sommige mensen oefenen met een oplossing in de vorm van schijftoewijzing, anderen gebruiken bestandsbeheerders die met lange paden kunnen werken: Far Manager, Total Commander en dergelijke. En nog veel meer keken met droefheid toe hoe het PS-script dat ze creëerden, waarin veel werk was geïnvesteerd en dat met een knal werkte in de testomgeving, in een productieomgeving hulpeloos klaagde over een onmogelijke taak: Het opgegeven pad, de bestandsnaam of beide zijn te lang. De volledig gekwalificeerde bestandsnaam moet minder dan 260 tekens lang zijn, en de mapnaam moet minder dan 248 tekens lang zijn.
Het blijkt dat 260 tekens genoeg zijn “niet alleen voor iedereen.” Als u geïnteresseerd bent om verder te gaan dan de grenzen van wat is toegestaan, raadpleeg dan de kat.
Hier zijn slechts enkele van de ongelukkige gevolgen van het beperken van de lengte van het bestandspad:
er is een map op de server, bijvoorbeeld D:DataSharedAccounting, die wordt gedeeld via SMB en aan gebruikers wordt gekoppeld als een netwerkstation S; gebruikers maken bestanden die beheerders/scripts niet kunnen lezen wanneer ze lokaal vanaf de server worden benaderd, omdat het absolute pad is langer dan het netwerkpad;
bij het migreren van gegevens uit andere systemen die minder strenge beperkingen op de padlengte hebben, zullen sommige daarvan in de nieuwe omgeving ontoegankelijk worden zonder te dansen met een tamboerijn;
Ik wijk enigszins af van het onderwerp en merk op dat voor DFS-replicatie het probleem dat in het artikel wordt besproken niet verschrikkelijk is en dat bestanden met lange namen met succes van server naar server reizen (als al het andere natuurlijk is goed gedaan).
Ik zou ook uw aandacht willen vestigen op een zeer nuttig hulpprogramma dat mij meer dan eens heeft geholpen robocopy. Ook is ze niet bang voor lange paden en kan ze veel. Als de taak dus neerkomt op het kopiëren/overbrengen van bestandsgegevens, kunt u daar stoppen. Als je trucjes wilt uithalen met toegangscontrolelijsten voor bestandssystemen (DACL's), kijk dan weg subinacl. Ondanks zijn hoge leeftijd presteerde het uitstekend op Windows 2012 R2. Hier toepassingsmethoden worden overwogen.
Ik was geïnteresseerd in het leren werken met lange PowerShell-paden. Bij hem lijkt het bijna op een bebaarde grap over Ivan Tsarevitsj en Vasilisa de Schone.
Snelle manier
Schakel over naar Linux en maak je geen zorgen over Windows 10/2016/2019 en schakel de juiste groepsbeleidsinstelling in/pas het register aan. Ik zal niet in detail op deze methode ingaan, omdat... Er zijn al veel artikelen over dit onderwerp op internet, bijvoorbeeld dit.
Gezien het feit dat de meeste bedrijven veel, op zijn zachtst gezegd, niet de nieuwste versies van besturingssystemen hebben, is deze methode alleen snel om op papier te schrijven, tenzij je natuurlijk een van die gelukkigen bent die weinig oudere systemen en Windows 10 heeft /2016/2019 regeert.
De lange weg
Laten we hier meteen een voorbehoud maken dat de wijzigingen het gedrag van Windows Explorer niet zullen beïnvloeden, maar het mogelijk zullen maken om lange paden in PowerShell-cmdlets te gebruiken, zoals Get-Item, Get-ChildItem, Remove-Item, enz.
Laten we eerst PowerShell bijwerken. Het is één, twee, drie keer gedaan.
We updaten het .NET Framework naar versie minimaal 4.5. Het besturingssysteem moet minimaal Windows 7 SP1/2008 R2 zijn. U kunt de huidige versie downloaden hier, lees meer informatie hier.
downloaden en installeer Windows Management Framework 5.1
We herstarten de machine.
Hardwerkende mensen kunnen de hierboven beschreven stappen handmatig uitvoeren, luie mensen kunnen het doen met behulp van SCCM, beleid, scripts en andere automatiseringstools.
De huidige versie van PowerShell kunt u vinden in de variabele $PSVersionTabel. Na de update zou het er ongeveer zo uit moeten zien:
Nu bij gebruik van cmdlets Get-ChildItem en dergelijke in plaats van het gebruikelijke Pad ем использовать letterlijk Pad.
Voor het gemak van het converteren van paden van het gebruikelijke formaat naar het formaat letterlijk Pad je kunt deze functie gebruiken:
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"}
}
Houd er rekening mee dat u bij het instellen van de parameter letterlijk Pad U kunt geen jokertekens gebruiken (*, ? en zo verder).
Naast de parameter letterlijk Pad, in de bijgewerkte versie van PowerShell-cmdlet Get-ChildItem heb de parameter Diepte, waarmee je de nestdiepte voor recursief zoeken kunt instellen, heb ik een paar keer gebruikt en was tevreden.
Nu hoef je je geen zorgen te maken dat je PS-script op het lange, netelige pad op een dwaalspoor terechtkomt en verre bestanden niet meer kan zien. Deze aanpak heeft me bijvoorbeeld veel geholpen bij het schrijven van een script om het ‘tijdelijke’ attribuut van bestanden in DFSR-mappen opnieuw in te stellen. Maar dat is een ander verhaal, dat ik in een ander artikel zal proberen te vertellen. Ik kijk uit naar interessante reacties van u en stel voor dat u deelneemt aan de enquête.