PowerShell'de Çalışmak İçin Birden Çok Parametreyi Aktarın
İşlev genel olarak belirli görevleri gerçekleştirmek ve bir değer döndürmek için kod içerir. İşlevler çoğunlukla işlevselliği yeniden kullanmak için kullanılır.
PowerShell işlevi, bir görevi gerçekleştirmek için tek satırlık veya komut dosyası içerdiğinden, PowerShell'deki işleve birden fazla parametre ileterek işlevdeki işlevselliği ele alabiliriz.
Bu yazıda PowerShell'de birden fazla parametrenin bir işleve nasıl aktarılacağını örneklerle tartışacağız.
PowerShell - İşleve Birden Çok Parametre Aktarın
PowerShell fonksiyonunda farklı veri türlerine sahip birden fazla parametre setini aktarabiliyoruz. Bu parametreler zorunlu veya isteğe bağlı olabilir.
Örneğin PowerShell işlevini kullanarak belirtilen konumda klasör ve dosya oluşturmayı göreceğiz.
Sorun Açıklaması: Dizin yoksa, dizin oluşturmak için bir işlev oluşturun.
Fonksiyonun birden fazla parametreyi zorunlu olarak kabul etmesi gerekir.
Fonksiyonda bir klasörün var olup olmadığını kontrol etmeli ve belirtilen Foldername parametresini kullanarak dizin oluşturmalıdır.
İşlev, bir dosyanın var olup olmadığını kontrol etmeli ve sağlanan dosya adı parametresini kullanmıyorsanız yeni bir dosya oluşturmalıdır.
İşlev Adı - Oluşturma Dizini
Birden Çok Parametre:
FolderName - dize veri türü, klasör adı yolunu içerir
DosyaAdı - dize veri türü, zorunlu parametre, dosya adı yolunu içerir
TempFile - dize veri türü, isteğe bağlı parametre, dosya adı yolunu içerir
Çözüm:
PowerShell'de çalışmak üzere birden fazla parametre iletmek için yukarıdaki sorun bildirimi için aşağıdaki PowerShell betiğine bakın.
# function to create directory and create file
Function Create-Directory()
{
# Create multiple parameters
# Mandatory parameter, set true
# Optional parameter, set false
# string data type and parameter name
Param
(
[Parameter(Mandatory = $true)] [string] $FolderName,
[Parameter(Mandatory = $true)] [string] $FileName,
[Parameter(Mandatory = $false)] [string] $TempFile
)
try
{
# Check if folder exists
if(Get-Item -Path $FolderName -ErrorAction Ignore)
{
# Check optional parameter value as by default optional parameter has null value
if($TempFile)
{
# Check if file exists
if(Get-Item -Path $TempFile -ErrorAction Ignore){
Write-Host $TempFile "file already exists!"
}
else
{
#Create temp file
New-Item -Verbose $TempFile -ItemType File
Write-Host -f Green $TempFile "file created successfully!"
}
}
else
{
Write-Host "File name path Parameter is null/optional"
}
}
else
{
#PowerShell Create directory if not exists
New-Item -Verbose $FolderName -ItemType Directory
Write-Host -f Green $FolderName "folder created successfully!"
New-Item -Verbose $FileName -ItemType File
Write-Host -f Green $FileName "file created successfully!"
}
}
catch
{
$ErrorMsg = $_.Exception.Message + " error raised while creating folder!"
Write-Host $ErrorMsg -BackgroundColor Red
}
}
#Parameters - Pass multiple parameters to the function
$FolderName="D:\Logs-FTP01";
$FileName= "D:\Logs-FTP01\NewFile.txt";
$TempFile= "D:\Logs-FTP01\Temp.txt";
Create-Directory $FolderName $FileName $TempFile
Yukarıdaki PowerShell betiğinde,
$FolderName - klasör yolunu içerir (zorunlu parametre)
$FileName - dosya yolunu içerir (zorunlu parametre)
$TempFile - geçici dosya yolunu içerir (isteğe bağlı parametre)
PowerShell işlev kılavuzuna göre Create-Directory işlevini oluşturduk (bir fiil ve isim içeren pascal durum adı)
Param anahtar kelimesini kullanarak üç parametre oluşturduk.
Zorunlu ayarı $true olarak ayarladığımız için $Foldername ve $Filename parametreleri zorunludur.
$TempFile parametresinin zorunlu olarak $false olarak ayarlanması gerekiyor. PowerShell'de, varsayılan olarak tüm parametreler isteğe bağlıdır.
Bir fonksiyonun içinde, Get-Item cmdlet'ini kullanarak bir klasörün var olup olmadığını kontrol etmeliyiz.
Bir klasör yoksa dizin oluşturun ve dosya oluşturun.
Dizin yoksa herhangi bir hata mesajını yok saymak için -ErrorAction parametresini kullandık.
Bir klasör varsa, klasör adı yolunun içinde geçici bir dosya adı oluşturun.
İsteğe bağlı parametreler varsayılan null değere sahip olduğundan $TempFile değerini kontrol etmemiz gerekir.
Fonksiyon ismini ve yukarıda oluşturduğumuz üç parametreyi kullanarak fonksiyonları aşağıdaki gibi çağırabiliriz.
#Parameters - Pass multiple parameters to the function
$FolderName="D:\Logs-FTP01";
$FileName= "D:\Logs-FTP01\NewFile.txt";
$TempFile= "D:\Logs-FTP01\Temp.txt";
Create-Directory $FolderName $FileName $TempFileYukarıdaki yöntemi kullanarak PowerShell'de bir işlev oluşturabilir ve PowerShell'de birden fazla parametre kümesini işleve iletebiliriz.
Yukarıdaki betiğin çıktısı aşağıdaki gibidir
Harika İpucu: PowerShell'de cmdlet için parametre listesi nasıl alınır?
Çözüm
PowerShell kullanarak birden fazla parametrenin nasıl iletileceğiyle ilgili yukarıda ayrıntılı olarak açıklanan makalenin sizin için yararlı ve eğitici olacağını umuyorum.
Varsayılan olarak PowerShell işlevindeki parametreler isteğe bağlıdır. Bunu zorunlu parametreler yapmak için Zorunlu'yu kullanın ve $true olarak ayarlayın.
İsteğe bağlı parametreler varsayılan boş değerlere sahiptir.
PowerShell Active Directory komutları ve PowerShell temelleri hakkında daha fazla konuyu ShellGeek ana sayfasında bulabilirsiniz.
