Öğeleri doğrudan işleme

dosya sistemi sürücülerindeki dosya ve klasörler gibi Windows PowerShell sürücülerde gördüğünüz öğelere ve Windows PowerShell kayıt defteri sürücülerindeki kayıt defteri anahtarlarına Windows PowerShell öğe adı verilir. Kendileriyle çalışmaya yönelik cmdlet 'lerin adlarında ad öğesi vardır.

Komutun çıktısı, Get-Command -Noun Item dokuz PowerShell öğesi cmdlet 'leri olduğunu gösterir.

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[]> ...

Yeni öğeler oluşturma (yeni-öğe)

Dosya sisteminde yeni bir öğe oluşturmak için New-Item cmdlet 'ini kullanın. Öğe yolu ile Path parametresini ve değeri veya olan ItemType parametresini ekleyin file directory .

Örneğin, dizinde adlı yeni bir dizin oluşturmak için New.Directory C:\Temp şunu yazın:

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

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

Bir dosya oluşturmak için, ItemType parametresinin değerini olarak değiştirin file . Örneğin, dizinde adlı bir dosya oluşturmak için file1.txt New.Directory şunu yazın:

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

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

Yeni bir kayıt defteri anahtarı oluşturmak için aynı tekniği kullanabilirsiniz. aslında, Windows kayıt defterindeki tek öğe türü bir anahtar olduğundan, bir kayıt defteri anahtarı oluşturmak daha kolaydır. (Kayıt defteri girişleri öğe özellikleridir.) Örneğin, CurrentVersion alt anahtarında "_Test" adlı bir anahtar oluşturmak için şunu yazın:

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

Bir kayıt defteri yolu yazarken, : PowerShell sürücü adlarına ve ' ye iki nokta () eklediğinizden emin olun HKLM: HKCU: . İki nokta üst üste olmadan, PowerShell yoldaki sürücü adını tanımıyor.

Kayıt defteri değerlerinin neden öğe olmadığı

Get-ChildItemBir kayıt defteri anahtarındaki öğeleri bulmak için cmdlet 'ini kullandığınızda, gerçek kayıt defteri girdilerini veya değerlerini hiçbir zaman görmezsiniz.

Örneğin, kayıt defteri anahtarı HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run genellikle sistem başlatıldığında çalışan uygulamaları temsil eden birkaç kayıt defteri girişi içerir.

Ancak, Get-ChildItem anahtardaki alt öğeleri aramak için kullandığınızda, anahtarın OptionalComponents alt anahtarı görürsünüz:

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

Kayıt defteri girdilerini öğe olarak değerlendirmek uygun olsa da, benzersiz olmasını sağlamak için bir kayıt defteri girdisinin yolunu belirtemezsiniz. Yol gösterimi Run adlı kayıt defteri alt anahtarı ve Run alt anahtarındaki (varsayılan) kayıt defteri girdisi arasında ayrım yapmaz. Ayrıca, kayıt defteri giriş adları ters eğik çizgi karakteri () içerebildiğinden \ , kayıt defteri girişleri öğeler ise, Windows\CurrentVersion\Run Bu yolda bulunan alt anahtardan adlı bir kayıt defteri girişini ayırt etmek için yol gösterimini kullanamazsınız.

Varolan öğeleri yeniden adlandırma (yeniden adlandır-öğe)

Bir dosya veya klasörün adını değiştirmek için Rename-Item cmdlet 'ini kullanın. Aşağıdaki komut file1.txt dosyanın adını olarak değiştirir fileOne.txt .

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

Rename-ItemCmdlet bir dosyanın veya klasörün adını değiştirebilir, ancak bir öğeyi taşıyamaz. Dosyayı dizinden Temp dizinine taşımaya çalıştığı için aşağıdaki komut başarısız olur New.Directory .

Rename-Item -Path C:\temp\New.Directory\fileOne.txt c:\temp\fileOne.txt
Rename-Item : Cannot rename because the target specified is not a path.
At line:1 char:12
+ Rename-Item  <<<< -Path C:\temp\New.Directory\fileOne c:\temp\fileOne.txt

Öğeleri taşıma (taşı-öğe)

Bir dosya veya klasörü taşımak için Move-Item cmdlet 'ini kullanın.

Örneğin, aşağıdaki komut, yeni. Directory dizinini C:\temp dizininden C: sürücüsünün köküne taşır. Öğenin taşındığını doğrulamak için cmdlet 'inin geçiş parametresini ekleyin Move-Item . Geçiş olmadan, Move-Item cmdlet herhangi bir sonuç görüntülemez.

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

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

Öğeleri kopyalama (kopyalama-öğe)

diğer kabuklardaki kopyalama işlemlerine alışkın değilseniz, Copy-Item Windows PowerShell içinde cmdlet 'inin davranışını olağan dışı bir şekilde bulabilirsiniz. Bir öğeyi bir konumdan diğerine kopyaladığınızda, Copy-Item içeriğini varsayılan olarak kopyalamaz.

Örneğin, New.Directory dizini C: sürücüsünden dizine kopyalarsanız, C:\temp komut başarılı olur, ancak yeni. Directory dizinindeki dosyalar kopyalanmaz.

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

İçeriğini görüntülediğinizde C:\temp\New.Directory , bunun dosya içerdiğini fark edersiniz:

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

Copy-ItemCmdlet içeriği neden yeni konuma kopyalıyor?

Copy-ItemCmdlet genel olacak şekilde tasarlandı; yalnızca dosya ve klasörlerin kopyalanması için değildir. Ayrıca, dosya ve klasörleri kopyalarken bile, içindeki öğeleri değil yalnızca kapsayıcıyı kopyalamak isteyebilirsiniz.

Bir klasörün tüm içeriğini kopyalamak için, komutuna cmdlet 'in Recurse parametresini ekleyin Copy-Item . Dizini içeriği olmadan zaten kopyaladıysanız, boş klasörün üzerine yazılmasını sağlayan zorla parametresini ekleyin.

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

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

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

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

Öğeler siliniyor (öğeyi kaldır)

Dosya ve klasörleri silmek için Remove-Item cmdlet 'ini kullanın. gibi Windows PowerShell cmdlet 'ler, Remove-Item önemli ölçüde geri alınamaz değişiklikler genellikle komutlarını girerken onay ister. Örneğin, klasörü kaldırmaya çalışırsanız, New.Directory klasör dosyaları içerdiğinden komutu onaylamanız istenir:

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"):

YesVarsayılan yanıt olduğundan, klasörü ve dosyalarını silmek Için ENTER tuşuna basın. Klasörü onaylamadan kaldırmak için Recurse parametresini kullanın.

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

Öğeleri yürütme (Invoke-Item)

PowerShell, Invoke-Item bir dosya veya klasör için varsayılan bir eylem gerçekleştirmek üzere cmdlet 'ini kullanır. Bu varsayılan eylem, kayıt defterindeki varsayılan uygulama işleyicisi tarafından belirlenir; Bu efekt, dosya Gezgini 'nde öğeye çift tıkladığınızda aynı olur.

Örneğin, aşağıdaki komutu çalıştırdığınız hakkında düşünün:

Invoke-Item C:\WINDOWS

' De bulunan bir Gezgin penceresi C:\Windows , klasörü çift tıklamış gibi görünür C:\Windows .

Boot.inidosyayı Windows Vista 'dan önceki bir sistemde çağırırsanız:

Invoke-Item C:\boot.ini

.inidosya türü Not Defteri ilişkili ise, boot.ini dosya Not Defteri açılır.