PowerShell'de Dosya Nasıl Oluşturulur


PowerShell'de dosya oluşturmanın birkaç yolu vardır. En yaygın yöntem new-item cmdlet'ini kullanmaktır. Bu cmdlet yalnızca dosya oluşturmak için değil aynı zamanda klasörler oluşturmak için de kullanılabilir. Ancak yeni öğe her zaman en iyi seçenek değildir.

PowerShell'de dosya oluşturmak için diğer seçenekler, örneğin bir cmdlet'in sonuçlarını bir dosyaya yönlendirmek veya bir dosya oluşturmak ve sonuçları depolamak için Set-Content'i kullanabiliriz.

Bu yazıda farklı seçeneklere bakacağız ve size dosya oluşturma konusunda bazı ipuçları vereceğim.

PowerShell Dosya Oluştur

Temel bilgilerle başlayalım, PowerShell'de yeni bir dosya oluşturmak için Yeni Öğe cmdlet'ini kullanacağız. Bu cmdlet dosyalar, klasörler veya sembolik bağlantılar oluşturmak için kullanılabilir. Bu yazımızda dosya oluşturmaya odaklanacağız.

Boş bir dosya oluşturmak için en azından dosyanın adını belirleyip -ItemType özelliğini file olarak ayarlayacağız. Dosyayı oluşturmak istediğiniz yolu belirtmezseniz dosya geçerli dizinde oluşturulacaktır.

New-Item -Name "test01.txt" -ItemType File

# Create a file in c:\temp
New-Item -Path "c:\temp" -Name "test01.txt" -ItemType File

Yol parametresi aynı zamanda joker karakterleri de kabul eder. Şimdi yolda neden bir joker karaktere ihtiyacım olduğunu düşünebilirsiniz, ancak bu, örneğin yolun her alt klasöründe yeni bir dosya oluşturmanıza olanak tanır:

New-Item -Path C:\Temp\* -Name temp.txt -ItemType File

# Result
C:\Temp\One\temp.txt
C:\Temp\Three\temp.txt
C:\Temp\Two\temp.txt

Yeni öğe cmdlet'i zaten mevcutsa bir dosya oluşturmaz. Bazı durumlarda dosyanın üzerine yazmak veya komut dosyanızın herhangi bir hata vermeden devam ettiğinden emin olmak isteyebilirsiniz. Zaten mevcut olan bir dosyanın üzerine yazmak istiyorsanız -force parametresini kullanabilirsiniz.

Bu, eğer varsa dosyanın üzerine yazacaktır; bu aynı zamanda dosyadaki içeriğin kaybolacağı anlamına da gelir:

New-Item -Path "c:\temp" -Name "test01.txt" -ItemType File -Force

Diğer bir seçenek de dosyanın var olup olmadığını kontrol etmektir; bunu Test-Path cmdlet'iyle yapabiliriz:

$path = "c:\temp\test1.txt"

# Create the folder is the path doesn't exist
If (-not(test-path -Path $path)) {
    New-Item -Path $path -ItemType File
}

Yukarıdaki örnekte gördüğünüz gibi aslında dosya adını belirtmemize gerek yok, dosya yoluna da dahil edebiliriz. New-Item cmdlet'i daha sonra hala gerekli dosyayı oluşturacaktır.

İçerikli Bir Dosya Oluşturun

Başlangıçta belirtildiği gibi PowerShell'de dosya oluşturmanın başka yöntemleri de vardır. Bu yöntemler yalnızca dosyayı oluşturmak değil aynı zamanda ona içerik eklemek istediğinizde de kullanılabilir. Örneğin, bir cmdlet ile veri aldığınızda ve bunu bir metin dosyasında saklamak istediğinizde Out-File cmdlet'ini veya yönlendirme operatörünü kullanabiliriz.

Out-File cmdlet'i, cmdlet'in sonuçlarını belirtilen dosyaya yönlendirecektir. Dosya mevcut değilse, onu oluşturacaktır. Diyelim ki bilgisayarımızdaki tüm yerel kullanıcıları almak ve bunu bir metin dosyasında saklamak istiyoruz:

Get-LocalUser | Select name | Out-File c:\temp\localusers.txt

# Or with the redirect operator
Get-LocalUser | Select name > c:\temp\localusers.txt

Bu makalede Out-File cmdlet'i ve örneğin içeriğin nasıl ekleneceği hakkında daha fazla bilgi edinin.

Ayrıca New-Item cmdlet'i veya Set-Content cmdlet'i ile bir dosya oluşturup içeriği kaydedebiliriz. Her iki cmdlet de hemen hemen aynı şekilde çalışır; dosya zaten mevcut olduğunda yalnızca Set-Content cmdlet'i içeriği değiştirir, oysa dosya zaten mevcut olduğunda Yeni-Öğe bir hata verir.

# Create a file and set the content
Set-Content -Path c:\temp\newFile.txt -Value "New file with Content"

# Or use New-Item to create the file with content
New-Item -Path c:\temp\ -name "newFile.txt" -Value "New file with Content"

Birden Çok Dosya Oluşturma

Birden fazla dosya oluşturmak için iki seçeneğimiz vardır; her dosyayı path parametresi içinde belirtebilir veya ForEach döngüsünü kullanabiliriz. Yalnızca iki veya üç dosya oluşturmanız gerekiyorsa bunları path parametresinde belirtmeniz yeterlidir:

New-Item -Path "c:\temp\test01.txt","c:\temp\test02.txt" -ItemType File

Ancak daha okunaklı bir seçenek, küçük bir ForEach döngüsü ve oluşturmak istediğiniz dosyaları içeren bir dizi kullanmaktır. Bu şekilde dizideki dosyaları eklemek veya değiştirmek ve ayrıca gerektiğinde diziye biraz mantık eklemek daha kolaydır.

# Specify the directory where you want to create the files
$targetDirectory = "C:\temp\"

# Create an array of file names
$fileNames = @("File1.txt", "File2.txt", "File3.txt")

# Loop through each file name and create a file with content
foreach ($fileName in $fileNames) {
    New-Item -Path $targetDirectory -Name $filename -ItemType file
    
    $filePath = Join-Path -Path $targetDirectory -ChildPath $fileName
    Write-Host "Created file: $filePath"
}

Dosya adlarını belirtmek istemediğinizde başka bir seçenek de bir dizin üzerinde yineleme yapmak ve dizin numarasını kullanarak bazı metin dosyaları oluşturmaktır:

1..10 | ForEach-Object {
    New-Item -Path "C:\temp\" -Name "$_.txt" -ItemType file
}

Özel Dosyalar Oluşturma

Şu ana kadar yalnızca TXT dosyaları oluşturduk. Ancak PowerShell ile yalnızca TXT dosyalarıyla sınırlı değiliz. Örneğin CSV, JSON, HTML veya XML dosyaları da oluşturabiliriz. Bunu yapmak için dosya içeriğinin doğru formata dönüştürüldüğünden emin olmamız gerekir.

Temel olarak New-Item cmdlet'iyle herhangi bir dosya türünü oluşturabilirsiniz. Örneğin dosya türünü .pdf olarak ayarlarsanız, verilen dizinde bir “PDF” dosyası elde edersiniz. Tek sorun, dosyanın içeriği doğru formatta olmadığı için açamamanızdır.

Bu, örneğin bir CSV dosyası oluşturmak istiyorsanız Export-CSV cmdlet'ini kullanmanız gerekeceği anlamına gelir. Veya bir XML dosyası için Export-CliXml cmdlet'ini kullanmanız gerekir:

$xmlData | Export-CliXml -Path "c:\temp\test.xml" -Encoding UTF8

Kapanış

Yeni öğe cmdlet'i ile PowerShell'de dosya oluşturmak oldukça kolaydır. Verileri dosyanın içinde depolamak için doğru cmdlet'leri kullanarak, dosyanızın içeriğinin dosya türüyle eşleştiğinden emin olun.

Umarım bu makaleyi faydalı bulmuşsunuzdur, herhangi bir sorunuz varsa aşağıya yorum bırakmanız yeterli.

İlgili makaleler