网站搜索

将多个参数传递给 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 基础知识的更多主题。

相关文章