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 gezinmek ve bu sürücülerdeki öğeleri düzenlemek, Windows disk sürücülerindeki dosya ve klasörleri düzenlemeye benzer. Bu makalede, PowerShell kullanarak belirli dosya ve klasör işleme görevleriyle nasıl başa çıkılacağı açıklanır.
Klasör içindeki tüm dosya ve klasörleri listeleme
Get-ChildItemkullanarak tüm öğeleri doğrudan bir klasör içinde alabilirsiniz. Gizli veya sistem öğelerini görüntülemek için isteğe bağlı Zorla parametresini ekleyin. Örneğin, bu komut PowerShell Drive C:doğrudan içeriğini görüntüler.
Get-ChildItem -Path C:\ -Force
Komut, cmd.exe veya Unix kabuğunda lsdir komutunu kullanma gibi yalnızca doğrudan kapsanan öğeleri listeler. Öğeleri alt klasörde göstermek için Yineleme parametresini belirtmeniz gerekir.
Aşağıdaki komut C: sürücüsündeki her şeyi listeler:
Get-ChildItem -Path C:\ -Force -Recurse
Get-ChildItem öğeleri Yol, Filter, Includeve Exclude parametreleriyle filtreleyebilir, ancak bunlar genellikle yalnızca adı temel alır.
Where-Objectkullanarak öğelerin diğer özelliklerine göre karmaşık filtreleme gerçekleştirebilirsiniz.
Aşağıdaki komut, Program Files klasöründe en son 1 Ekim 2005'ten sonra değiştirilen ve ne 1 megabayttan küçük ne de 10 megabayttan büyük olan tüm yürütülebilir dosyaları bulur:
Get-ChildItem -Path $Env:ProgramFiles -Recurse -Include *.exe |
Where-Object -FilterScript {
($_.LastWriteTime -gt '2005-10-01') -and ($_.Length -ge 1mb) -and ($_.Length -le 10mb)
}
Dosya ve klasörleri kopyalama
Kopyalama işlemi Copy-Itemile yapılır. Aşağıdaki komut PowerShell profil betiğinizi yedekler:
if (Test-Path -Path $PROFILE) {
Copy-Item -Path $PROFILE -Destination $($PROFILE -replace 'ps1$', 'bak')
}
Test-Path komutu, profil betiğinin mevcut olup olmadığını denetler.
Hedef dosya zaten varsa kopyalama girişimi başarısız olur. Önceden var olan bir hedefin üzerine yazmak için Zorla parametresini kullanın:
if (Test-Path -Path $PROFILE) {
Copy-Item -Path $PROFILE -Destination $($PROFILE -replace 'ps1$', 'bak') -Force
}
Bu komut, hedef salt okunur olduğunda bile çalışır.
Klasör kopyalama aynı şekilde çalışır. Bu komut, C:\temp\test1 klasörünü yinelemeli olarak yeni klasöre C:\temp\DeleteMe kopyalar:
Copy-Item C:\temp\test1 -Recurse C:\temp\DeleteMe
Ayrıca, bir öğe seçimini de kopyalayabilirsiniz. Aşağıdaki komut, C:\data içinde hangi konumda olursa olsun bulunan tüm .txt dosyalarını C:\temp\text'ye kopyalar:
Copy-Item -Filter *.txt -Path C:\data -Recurse -Destination C:\temp\text
Dosyaları kopyalamak için xcopy.exe ve robocopy.exe gibi yerel komutları çalıştırmaya devam edebilirsiniz.
Dosya ve klasör oluşturma
Yeni öğeler oluşturmak tüm PowerShell sağlayıcılarında aynı şekilde çalışır. Bir PowerShell sağlayıcısında birden fazla öğe türü varsa (örneğin, FileSystem PowerShell sağlayıcısı dizinler ve dosyalar arasında ayrım gerçekleştirir), öğe türünü belirtmeniz gerekir.
Bu komut C:\temp\New Folderyeni bir klasör oluşturur:
New-Item -Path 'C:\temp\New Folder' -ItemType Directory
Bu komut yeni bir boş dosya C:\temp\New Folder\file.txt oluşturur
New-Item -Path 'C:\temp\New Folder\file.txt' -ItemType File
Önemli
Klasör oluşturmak için Zorla anahtarını New-Item komutuyla kullanırken ve klasör zaten var olduğunda, klasörün üzerine yazma veya değiştirme . Yalnızca mevcut klasör nesnesini döndürür. Ancak, zaten var olan bir dosyada New-Item -Force kullanırsanız, dosyanın üzerine yazılır.
Klasör içindeki tüm dosya ve klasörleri kaldırma
Remove-Itemkullanarak kapsanan öğeleri kaldırabilirsiniz, ancak öğe başka bir şey içeriyorsa kaldırma işlemini onaylamanız istenir. Örneğin, diğer öğeleri içeren klasör C:\temp\DeleteMe silmeye çalışırsanız, PowerShell klasörü silmeden önce sizden onay ister:
Remove-Item -Path C:\temp\DeleteMe
Confirm
The item at C:\temp\DeleteMe has children and the Recurse parameter wasn't
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"):
Her içerikteki öğe için sorulmasını istemiyorsanız Özyineleme parametresini belirtin.
Remove-Item -Path C:\temp\DeleteMe -Recurse
Bir yerel klasörü sürücü olarak eşleme
Ayrıca, New-PSDrive komutunu kullanarak bir yerel klasörü eşleyebilirsiniz. Aşağıdaki komut, yerel Program Files dizininde kökü P: olan ve yalnızca PowerShell oturumunda görülebilen bir yerel sürücü oluşturur.
New-PSDrive -Name P -Root $Env:ProgramFiles -PSProvider FileSystem
Ağ sürücülerinde olduğu gibi, PowerShell içinde eşlenen sürücüler de hemen PowerShell kabuğunda görünür. Dosya Gezgini'nden görünen eşlenmiş bir sürücü oluşturmak için Kalıcı parametresini kullanın. Ancak, Kalıcıile yalnızca uzak yollar kullanılabilir.
Metin dosyasını diziye okuma
Metin verileri için en yaygın depolama biçimlerinden biri, ayrı satırlar ayrı veri öğeleri olarak ele alınan bir dosyadadır.
Get-Content cmdlet'i, burada gösterildiği gibi dosyanın tamamını tek adımda okumak için kullanılabilir:
Get-Content -Path $PROFILE
# Load modules and change to the PowerShell-Docs repository folder
Import-Module posh-git
Set-Location C:\Git\PowerShell-Docs
Get-Content dosyadan okunan verileri, dosya içeriği satırı başına bir öğeyle bir dizi olarak ele alır. Döndürülen içeriğin Uzunluğu denetleyerek bunu onaylayabilirsiniz:
PS> (Get-Content -Path $PROFILE).Length
3
Bu komut, en çok bilgi listelerini PowerShell'e almak için kullanışlıdır. Örneğin, C:\temp\domainMembers.txtdosyasında bilgisayar adlarının veya IP adreslerinin listesini, dosyanın her satırında bir adla depolayabilirsiniz. dosya içeriğini almak ve $Computersdeğişkenine koymak için Get-Content kullanabilirsiniz:
$Computers = Get-Content -Path C:\temp\DomainMembers.txt
$Computers artık her öğede bir bilgisayar adı içeren bir dizidir.
PowerShell