Van egy nagyon hasznos .NET típus, a [system.io.path] , ami az elérési utakkal kapcsolatban nyújt hasznos metódusokat. Az egyik ilyen a kiterjesztések módosítása a ChangeExtension metódussal:
PS C:\> [System.IO.Path]::ChangeExtension("C:\PSKönyv\szöveg.txt","xtx")
C:\PSKönyv\szöveg.xtx
PS C:\> [System.IO.Path]::ChangeExtension("C:\PSKönyv\NincsKiterjesztés","txt")
C:\PSKönyv\NincsKiterjesztés.txt
Látható, hogy akár meglevő kiterjesztést le lehet cserélni, akár kiterjesztés nélküli fájlnak lehet kiterjesztést adni.
A GetTempPath metódus annyival jobb, mint a $env:temp, hogy nem konvertálja az elérési utat rövid nevekből álló elérési úttá:
PS C:\> [System.IO.Path]::GetTempPath()
C:\Users\SoosTibor\AppData\Local\Temp\
PS C:\> $env:TEMP
C:\Users\SOOSTI~1\AppData\Local\Temp
Ez ott lehet hasznos, ha egy külső programnak akarjuk átadni az ideiglenes fájlok tárolására szolgáló mappa elérési útját, mert tapasztalatom szerint nem minden program szereti a hullám (~) karaktert.
A GetInvalidFileNameChars metódus segítségével készíthetünk olyan kifejezést, ami kicseréli a fájlnevekben nem érvényes karaktereket az aláhúzás karakterre:
PS C:\> $pattern = "[" + [regex]::Escape(-join [system.io.path]::GetInvalidFile
NameChars()) + "]"
PS C:\> 'nem" \érvényes* fájl?.név' -replace $pattern, "_"
nem_ _érvényes_ fájl_.név
A többi metódus bele van integrálva a Path főnévvel rendelkező cmdletekbe, így azokra nincs akkora szükségünk. A GetTempFileName metódust pedig már láttuk a 2.6.12 Ideiglenes fájlok létrehozása fejezetben.