PowerShell is a powerful tool for system administrators and developers alike. It allows you to automate tasks, manage systems, and work with data quickly and easily. One of the features that makes PowerShell so flexible is its parameter system, which lets you customize the behavior of commands and scripts with a wide range of options. In this blog post, we’ll take a look at some advanced PowerShell parameter usage, including aliases.

Basic Parameters Link to heading

PowerShell commands often take parameters, which are options that modify the behavior of the command. For example, the Get-ChildItem command lists the files and folders in a directory, and it takes a number of parameters that let you control the output. Here’s an example:

 Get-ChildItem -Path C:\Windows -Recurse

This command lists all the files and folders in the C:\Windows directory and its subdirectories. The -Path parameter specifies the directory to search, and the -Recurse parameter tells PowerShell to search all subdirectories recursively.

Advanced Parameters Link to heading

PowerShell also supports advanced parameters, which give you more control over how the command behaves. One example of an advanced parameter is the ParameterSetName attribute, which lets you define different sets of parameters for a command. Here’s an example:

function Get-ProcessInfo {
    [CmdletBinding(DefaultParameterSetName='ProcessName')]
    param (
        [Parameter(ParameterSetName='ProcessName', Mandatory=$true)]
        [string[]] 
        $ProcessName,

        [Parameter(ParameterSetName='ProcessId', Mandatory=$true)]
        [int[]] 
        $ProcessId
    )

    if ($PSCmdlet.ParameterSetName -eq $ProcessName) {
        Get-Process -Name $ProcessName
    } 
    else {
        Get-Process -Id $ProcessId
    }
}

This function takes two sets of parameters: ProcessName and ProcessId. If the ProcessName parameter set is used, the function gets process information by name. If the ProcessId parameter set is used, the function gets process information by ID.

Another example of an advanced parameter is the ValidateScript attribute, which lets you specify a script that validates the input for a parameter. Here’s an example:

This was generated by chatgpt