将多个参数传递给 PowerShell 中的函数
一般来说,函数包含执行某些任务并返回值的代码。函数主要用于重用功能。
在PowerShell函数中包含执行任务的单行或脚本,我们可以通过将多个参数传递给PowerShell中的函数来处理函数中的功能。
在本文中,我们将通过示例讨论如何在 PowerShell 中将多个参数传递给函数。
PowerShell - 将多个参数传递给函数
在PowerShell函数中,我们可以传递多个不同数据类型的参数集。这些参数可能是强制或可选。
我们将看到使用 PowerShell 函数在指定位置创建文件夹和文件的示例。
问题陈述:创建一个函数来创建目录(如果不存在)。
该函数应强制接受多个参数。
在该函数中,它应该检查文件夹是否存在并使用指定的Foldername 参数创建目录。
该函数应检查文件是否存在,如果不使用提供的文件名参数,则创建一个新文件。
函数名称 - 创建目录
多个参数:
FolderName - 字符串数据类型,包含文件夹名称路径
FileName - 字符串数据类型,必选参数,包含文件名路径
TempFile - 字符串数据类型,可选参数,包含文件名路径
解决方案:
请参阅下面的 PowerShell 脚本,了解上述问题陈述,以将多个参数传递给 PowerShell 中的函数。
# 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
在上面的 PowerShell 脚本中,我们有
$FolderName - 包含文件夹路径(强制参数)
$FileName - 包含文件路径(强制参数)
$TempFile - 包含临时文件路径(可选参数)
我们根据 PowerShell 函数指南创建了函数 Create-Directory (带有动词和名词的 pascal 大小写名称)
使用 Param 关键字,我们创建了三个参数。
$Foldername 和 $Filename 参数是必需的,因为我们已将强制设置设置为 $true。
$TempFile 参数强制设置为 $false。在 PowerShell 中,默认情况下,所有参数都是可选的。
在函数内部,我们必须使用 Get-Item cmdlet 检查文件夹是否存在。
如果文件夹不存在,则创建目录并创建文件。
如果目录不存在,我们使用 -ErrorAction 参数忽略任何错误消息。
如果文件夹存在,则在文件夹名称路径内创建临时文件名。
我们需要检查 $TempFile 值,因为可选参数具有默认空值。
我们可以使用上面创建的函数名称和三个参数来调用函数,如下所示
#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使用上面的方法,我们可以在PowerShell中创建一个函数,并在PowerShell中向函数传递多个参数集。
上述脚本的输出如下
酷提示:如何在 PowerShell 中获取 cmdlet 的参数列表!
结论
我希望上述有关如何使用 PowerShell 将多个参数传递给函数的详细文章对您有所帮助和教育。
默认情况下,PowerShell 函数中的参数是可选的。要使其成为强制参数,请使用 Mandatory 并将其设置为 $true。
可选参数具有默认空值。
您可以在 ShellGeek 主页上找到有关 PowerShell Active Directory 命令和 PowerShell 基础知识的更多主题。
