Megosztás a következőn keresztül:


Elemek közvetlen módosítása

A PowerShell-meghajtókon látható elemeket, például a fájlokat és mappákat vagy a beállításkulcsokat a PowerShell elemeinek nevezzük. A velük való munkához tartozó parancsmagok neveiben szerepel az Elem főnév.

A Get-Command -Noun Item parancs kimenete azt mutatja, hogy kilenc PowerShell elem-cmdlet található.

Get-Command -Noun Item
CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Clear-Item                      Clear-Item [-Path] <String[]...
Cmdlet          Copy-Item                       Copy-Item [-Path] <String[]>...
Cmdlet          Get-Item                        Get-Item [-Path] <String[]> ...
Cmdlet          Invoke-Item                     Invoke-Item [-Path] <String[...
Cmdlet          Move-Item                       Move-Item [-Path] <String[]>...
Cmdlet          New-Item                        New-Item [-Path] <String[]> ...
Cmdlet          Remove-Item                     Remove-Item [-Path] <String[...
Cmdlet          Rename-Item                     Rename-Item [-Path] <String>...
Cmdlet          Set-Item                        Set-Item [-Path] <String[]> ...

Új elemek létrehozása

Ha új elemet szeretne létrehozni a fájlrendszerben, használja a New-Item parancsmagot. Adja meg az Elérési út paramétert az elem elérési útjával, és az ItemType paramétert File vagy Directory értékkel.

Ha például egy új New.Directory nevű könyvtárat szeretne létrehozni a C:\Temp könyvtárban, írja be a következőt:

New-Item -Path C:\temp\New.Directory -ItemType Directory
    Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2006-05-18  11:29 AM            New.Directory

Fájl létrehozásához módosítsa az ItemType paraméter értékét a következőre File: . Ha például létre szeretne hozni egy könyvtárban elnevezett file1.txt fájlt, írja be a New.Directory következőt:

New-Item -Path C:\temp\New.Directory\file1.txt -ItemType File
    Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp\New.Directory

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2006-05-18  11:44 AM          0 file1

Ezzel a módszerrel új beállításkulcsot hozhat létre. Valójában a beállításkulcsok létrehozása egyszerűbb, mert a Windows beállításjegyzékben az egyetlen elemtípus egy kulcs. (A beállításjegyzék-bejegyzések a tulajdonságok.) Például egy _Test nevű kulcs létrehozásához az CurrentVersion alkulcsban írja be:

New-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\_Test
   Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

SKC  VC Name                           Property
---  -- ----                           --------
  0   0 _Test                          {}

Beállításjegyzék-elérési út beírásakor mindenképpen adja meg a kettőspontot (:), és a PowerShell-meghajtók nevei helyes formátumúak legyenek: HKLM: és HKCU:. A kettőspont nélkül a PowerShell nem ismeri fel a meghajtó nevét az elérési úton.

Miért nem elemek a beállításjegyzék értékei?

Amikor a Get-ChildItem parancsmaggal megkeresi a beállításkulcs elemeit, soha nem fog tényleges beállításjegyzék-bejegyzéseket vagy azok értékeit látni.

A beállításkulcs HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run például általában több beállításjegyzék-bejegyzést tartalmaz, amelyek a rendszer indításakor futó alkalmazásokat jelölik.

Ha azonban gyermekelemeket keres Get-ChildItem a kulcsban, csak a OptionalComponents kulcs alkulcsa jelenik meg:

Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Run
   Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
SKC  VC Name                           Property
---  -- ----                           --------
  3   0 OptionalComponents             {}

Bár a beállításjegyzék-bejegyzéseket célszerű elemekként kezelni, nem adhatja meg a beállításjegyzék-bejegyzés elérési útját oly módon, hogy az egyedi legyen. Az elérési út jelölése nem tesz különbséget a Futtatás nevű beállításkulcs és a Futtatás alkulcs (Alapértelmezett) beállításjegyzék-bejegyzés között. Mivel a beállításjegyzék-bejegyzésnevek tartalmazhatják a fordított perjel karaktert (\), ha a beállításjegyzék-bejegyzések elemek voltak, az elérési út jelölésével nem lehetett megkülönböztetni az elérési útban található alkulcsból elnevezett Windows\CurrentVersion\Run beállításjegyzék-bejegyzést.

Meglévő elemek átnevezése

Egy fájl vagy mappa nevének módosításához használja a Rename-Item parancsmagot. Az alábbi parancs a fájl nevét a file1.txt következőre fileOne.txtmódosítja: .

Rename-Item -Path C:\temp\New.Directory\file1.txt fileOne.txt

A Rename-Item parancsmag módosíthatja egy fájl vagy mappa nevét, de nem tud áthelyezni egy elemet. A következő parancs meghiúsul, mert megpróbálja áthelyezni a fájlt a New.Directory könyvtárból a Temp könyvtárba.

Rename-Item -Path C:\temp\New.Directory\fileOne.txt C:\temp\fileOne.txt
Rename-Item : can't rename because the target specified isn't a path.
At line:1 char:12
+ Rename-Item  <<<< -Path C:\temp\New.Directory\fileOne C:\temp\fileOne.txt

Elemek áthelyezése

Fájl vagy mappa áthelyezéséhez használja a Move-Item parancsmagot.

Az alábbi parancs például áthelyezi a New.Directory könyvtárat a C:\temp könyvtárból a C: meghajtó gyökerére. Az elem áthelyezésének ellenőrzéséhez adja meg a parancsmag PassThru paraméterét Move-Item . A PassThru nélkül a Move-Item parancsmag nem jelenít meg semmilyen eredményt.

Move-Item -Path C:\temp\New.Directory -Destination C:\ -PassThru
    Directory: Microsoft.PowerShell.Core\FileSystem::C:\

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2006-05-18  12:14 PM            New.Directory

Elemek másolása

Ha ismeri a másolási műveleteket más rendszerhéjakban, előfordulhat, hogy a Copy-Item parancsmag viselkedése szokatlan a PowerShellben. Ha egy elemet egyik helyről a másikra másol, Copy-Item alapértelmezés szerint nem másolja a tartalmát.

Ha például a C: meghajtóról másolja a New.Directory könyvtárat a C:\temp könyvtárba, a parancs sikeres lesz, de a New.Directory könyvtárban lévő fájlok nem lesznek másolva.

Copy-Item -Path C:\New.Directory -Destination C:\temp

Ha megjeleníti a(z) C:\temp\New.Directory tartalmát, azt fogja tapasztalni, hogy ez nem tartalmaz fájlokat.

PS> Get-ChildItem -Path C:\temp\New.Directory
PS>

Miért nem másolja a Copy-Item parancsmag a tartalmat az új helyre?

A Copy-Item parancsmagot úgy tervezték, hogy általános legyen; nem csak fájlok és mappák másolására szolgál. A fájlok és mappák másolása esetén is érdemes lehet csak a tárolót másolni, a benne lévő elemeket nem.

Egy mappa teljes tartalmának másolásához adja meg a parancsmag Recurse paraméterét Copy-Item a parancsban. Ha már átmásolta a könyvtárat a tartalma nélkül, adja hozzá a Force paramétert, amely lehetővé teszi az üres mappa felülírását.

Copy-Item -Path C:\New.Directory -Destination C:\temp -Recurse -Force -PassThru
    Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2006-05-18   1:53 PM            New.Directory

    Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp\New.Directory

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2006-05-18  11:44 AM          0 file1

Elemek törlése

Fájlok és mappák törléséhez használja a Remove-Item parancsmagot. A PowerShell-parancsmagok, például Remove-Itema jelentős, visszavonhatatlan módosításokat lehetővé tevő parancsmagok gyakran megerősítést kérnek a parancsok megadásakor. Ha például megpróbálja eltávolítani a New.Directory mappát, a rendszer kérni fogja a parancs megerősítését, mert a mappa fájlokat tartalmaz:

Remove-Item C:\temp\New.Directory
Confirm
The item at C:\temp\New.Directory has children and the -Recurse parameter was not
specified. If you continue, all children will be removed with the item. Are you
 sure you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):

Mivel Yes ez az alapértelmezett válasz, a mappa és a fájlok törléséhez nyomja le az Enter billentyűt. Ha megerősítés nélkül szeretné eltávolítani a mappát, használja a Recurse paramétert .

Remove-Item C:\temp\New.Directory -Recurse

Elemek végrehajtása

A PowerShell a Invoke-Item parancsmaggal hajtja végre egy fájl vagy mappa alapértelmezett műveletét. Ezt az alapértelmezett műveletet a beállításjegyzék alapértelmezett alkalmazáskezelője határozza meg; az effektus ugyanaz, mint ha duplán kattint az elemre a Fájlkezelőben.

Tegyük fel például, hogy a következő parancsot futtatja:

Invoke-Item C:\WINDOWS

Megjelenik egy Explorer ablak a C:\Windows helyen, mintha duplán kattintott volna a C:\Windows mappára.

Ha windows vista előtti rendszeren hívja meg a Boot.ini fájlt:

Invoke-Item C:\boot.ini

Ha a .ini fájltípus a Jegyzettömbhöz van társítva, a boot.ini fájl megnyílik a Jegyzettömbben.