Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
PowerShell sürücülerinde gördüğünüz dosyalar ve klasörler veya kayıt defteri anahtarları gibi öğeler PowerShell'deki Öğeler olarak adlandırılır. Bu öğeyle çalışmaya yönelik cmdlet'lerin adlarında Öğe adı bulunur.
Get-Command -Noun Item komutunun çıktısı, dokuz tane PowerShell öğesi cmdlet 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
Dosya sisteminde yeni bir öğe oluşturmak için cmdlet'ini New-Item kullanın.
Path parametresini öğenin yoluna ve ItemType parametresini File veya Directory değerine ekleyin.
Örneğin, C:\Temp dizininde New.Directory adlı yeni bir dizin oluşturmak için şunu yazın:
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
Dosya oluşturmak için ItemType parametresinin değerini olarak Filedeğiştirin. Örneğin, New.Directory dizininde file1.txt adlı bir dosya oluşturmak için şunu yazın:
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
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 kayıt defteri anahtarını oluşturmak daha kolaydır. (Kayıt defteri girdileri öğe özellikleridir.) Örneğin, alt anahtarda CurrentVersion adlı _Test 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 iki nokta üst üste işareti (:) eklediğinizden ve adlar arasında HKLM: ve HKCU: bulunduğundan emin olun. İki nokta üst üste olmadan PowerShell yoldaki sürücü adını tanımaz.
Kayıt defteri değerleri neden öğe değildir?
Bir kayıt defteri anahtarındaki Get-ChildItem öğ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 girdisi içerir.
Ancak, Get-ChildItem öğesini anahtarın alt öğelerini aramak için kullandığınızda, göreceğiniz tek şey anahtarın OptionalComponents alt anahtarıdır.
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 işlemek kullanışlı olsa da, kayıt defteri girdisine benzersiz olmasını sağlayacak bir yol belirtemezsiniz. Yol gösterimi, Çalıştır adlı kayıt defteri alt anahtarı ile Çalıştır alt anahtarındaki (Varsayılan) kayıt defteri girdisi arasında ayrım yapmaz.
Ayrıca, kayıt defteri girdi adları ters eğik çizgi karakterini (\) içerebileceğinden, kayıt defteri girdileri birer öğe olsaydı, o zaman Windows\CurrentVersion\Run adlı kayıt defteri girdisini, o yolda bulunan alt anahtardan ayırt etmek için yol gösterimini kullanamazdınız.
Varolan öğeleri yeniden adlandırma
Bir dosya veya klasörün adını değiştirmek için cmdlet'ini Rename-Item kullanın. Aşağıdaki komut dosyanın adını file1.txt olarak fileOne.txtdeğiştirir.
Rename-Item -Path C:\temp\New.Directory\file1.txt fileOne.txt
Rename-Item Cmdlet bir dosyanın veya klasörün adını değiştirebilir, ancak öğeyi taşıyamaz. Aşağıdaki komut, dosyayı dizinden New.Directory Temp dizinine taşımaya çalıştığından başarısız olur.
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
Öğeleri taşıma
Bir dosya veya klasörü taşımak için cmdlet'ini Move-Item kullanın.
Örneğin, aşağıdaki komut New.Directory dizinini C:\temp dizininden alarak C: sürücüsünün köküne taşır. Öğenin taşındığını doğrulamak için cmdlet'in PassThru parametresini Move-Item ekleyin.
PassThruMove-Item olmadan, cmdlet herhangi bir sonuç görüntülemez.
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
Öğeleri kopyalama
Diğer kabuklardaki kopyalama işlemlerini biliyorsanız, PowerShell'de cmdlet'in Copy-Item davranışını olağan dışı bulabilirsiniz. Bir öğeyi bir konumdan diğerine kopyaladığınızda, Copy-Item öğe içeriğini varsayılan olarak kopyalamaz.
Örneğin, dizini C: sürücüsünden dizine C:\temp kopyalarsanız New.Directory komut başarılı olur, ancak New.Directory dizinindeki dosyalar kopyalanmamıştır.
Copy-Item -Path C:\New.Directory -Destination C:\temp
içeriğini C:\temp\New.Directorygörüntülerseniz, dosya içermediğini görürsünüz:
PS> Get-ChildItem -Path C:\temp\New.Directory
PS>
Cmdlet içeriği neden yeni konuma kopyalamıyor Copy-Item ?
Copy-Item Cmdlet genel olacak şekilde tasarlanmıştır; yalnızca dosya ve klasörleri kopyalamak için değildir.
Ayrıca, dosya ve klasörleri kopyalarken bile içindeki öğeleri değil yalnızca kapsayıcıyı kopyalamak isteyebilirsiniz.
Klasörün tüm içeriğini kopyalamak için komutuna cmdlet'in Copy-ItemRecurse parametresini ekleyin. Dizini içeriği olmadan zaten kopyaladıysanız, boş klasörün üzerine yazmanızı sağlayan Force parametresini ekleyin.
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
Öğeleri silme
Dosya ve klasörleri silmek için cmdlet'ini Remove-Item kullanın. gibi Remove-Itemönemli ve geri alınamaz değişiklikler yapabilen PowerShell cmdlet'leri, komutlarını girdiğinizde genellikle onay ister. Örneğin, klasörü kaldırmaya New.Directory çalışırsanız, 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"):
Yes Varsayı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 çalıştırma
PowerShell, bir dosya veya klasör için varsayılan eylemi gerçekleştirmek üzere cmdlet'ini kullanır Invoke-Item . Bu varsayılan eylem, kayıt defterindeki varsayılan uygulama işleyicisi tarafından belirlenir; etkisi, Dosya Gezgini'nde öğeye çift tıklamanız ile aynıdır.
Örneğin, aşağıdaki komutu çalıştırdığınızı varsayalım:
Invoke-Item C:\WINDOWS
C:\Windows klasörüne çift tıklamışsınız gibi, C:\Windows içinde bulunan bir Gezgin penceresi görüntülenir.
Dosyayı Windows Vista'nın öncesinde bir sistemde çağırırsanız Boot.ini :
Invoke-Item C:\boot.ini
.ini Dosya türü Not Defteri ile ilişkiliyse, boot.ini dosya Not Defteri'nde açılır.
PowerShell