Új fájlt létrehozni a new-item cmdlettel lehet:
[8] PS C:\scripts> new-item -Path . -Name szöveg.txt -type file -Value "Ez e
gy szöveg"
Directory: C:\scripts
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2008.04.22. 21:31 14 szöveg.txt
Természeten nem csak a fájlt, hanem könyvtárt is készíthetünk, talán ez gyakoribb:
[9] PS C:\scripts> New-Item -Path . -Name "Alkönyvtár" -type Directory
Directory: C:\scripts
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2008.04.22. 21:33 <DIR> Alkönyvtár
Létrehozni úgy is lehet, hogy nem használjuk a ‑Name paramétert, hanem a ‑Path-ban már a létrehozni kívánt elem elérési útját adjuk meg:
PS C:\> New-Item -Path C:\PowerShell\ÚjKönyvtár -ItemType Directory
Directory: C:\PowerShell
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2016.02.07. 23:03 ÚjKönyvtár
Könyvtár létrehozása előtt érdemes megnézni, hogy létezik-e esetleg már a könyvtár. Erre a célra a Test-Path cmdlet áll rendelkezésünkre:
[12] PS C:\> Test-Path C:\scripts
True
Ha még precízebbe akarunk lenni, akkor a -PathType paramétert is használjuk, ha könyvtárra kérdezünk rá, akkor Container-t kell megadni:
PS C:\> Test-Path -Path C:\scripts -PathType Container
True
Ha fájlokat, vagy ahhoz hasonló elemekre kérdezünk, akkor a ‑PathType értéke a Leaf.
Új lehetőség a PowerShell 5.0-tól kezdődően, hogy az elemek korára is rákérdezhetünk az -OlderThan vagy ‑NewerThan paraméterrel. Ilyenkoz az elem LastWriteTime tulajdonságával veti össze a megadott DateTime adatot:
PS C:\> Test-Path C:\scripts\ -OlderThan 2016.01.01
False
PS C:\> Test-Path C:\scripts\ -OlderThan 2016.03.01
True
Feladat lehet még a fájlok attribútumainak beállítása. Ezeket egyszerűen állíthatjuk be a fájlobjektumok tulajdonságainak módosításával:
[13] PS C:\> (Get-Item C:\scripts\alice.txt).attributes = "Archive, hidden"
De vajon milyen lehetőségek közül válogathatok az attribútumoknál? Ezt is megtudhatjuk, de elsőként meg kell nézni, hogy valójában milyen típusú adat a fájlok attribútuma:
[14] PS C:\> (Get-Item C:\scripts\alice.txt).attributes.gettype().fullname
System.IO.FileAttributes
Ez tehát a System.IO.FileAttributes típus, ami egy u.n. enumeration típus, aminek lékerdezhetjük a lehetséges értékeit:
PS C:\> [enum]::GetValues("System.IO.FileAttributes")
ReadOnly
Hidden
System
Directory
Archive
Device
Normal
Temporary
SparseFile
ReparsePoint
Compressed
Offline
NotContentIndexed
Encrypted
IntegrityStream
NoScrubData
A PowerShellben a típuskonverzió annyira okos, hogy a [13]-as sorban sztringként megadott fájl-attribútumokat (vesszővel elválasztott két attribútum egy sztringben) is képes volt System.IO.FileAttributes típusúvá konvertálni.
Ha egy olyan mappát szeretnénk létrehozni, aminek nem létezik még a szülő mappája, akkor ezt a New‑Item szó nélkül pótolja nekünk:
PS C:\> New-Item C:\PSKönyv\nemlétező -Name Almappa -ItemType directory
Directory: C:\PSKönyv\nemlétező
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2014.06.30. 21:46 Almappa
A fenti kifejezés a c:\PSKönyv\nemlétező mappát is létrehozta, mivel az nem létezett korábban.
Érdekes, ugyanez fájlok létrehozása közben nem automatikus:
PS C:\> New-Item C:\PSKönyv\nemlétező2 -Name ÚjFájl.txt -ItemType file
New-Item : Could not find a part of the path 'C:\PSKönyv\nemlétező2\ÚjFájl.txt
'.
At line:1 char:1
+ New-Item C:\PSKönyv\nemlétező2 -Name ÚjFájl.txt -ItemType file
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\PSKönyv\nemlétező2\ÚjFájl.txt:S
tring) [New-Item], DirectoryNotFoundException
+ FullyQualifiedErrorId : NewItemIOError,Microsoft.PowerShell.Commands.Ne
wItemCommand
Ellenben, ha a –Force kapcsolóval futtatjuk ugyanezt, akkor megkapjuk a hiányzó mappaszinteket:
PS C:\> New-Item C:\PSKönyv\nemlétező2 -Name ÚjFájl.txt -ItemType file -Force
Directory: C:\PSKönyv\nemlétező2
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2014.06.30. 21:52 0 ÚjFájl.txt