PrintManagement.ArgumentCompleters.ps1
# # .SYNOPSIS # # Complete the -Name argument to Printer cmdlets # function PrinterNameArgumentCompletion { param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter) $optionalCn = @{} $cn = $fakeBoundParameter["ComputerName"] if($cn) { $optionalCn.ComputerName = $cn } Get-Printer -Name "$wordToComplete*" @optionalCn | Sort-Object Name | ForEach-Object { $tooltip = $_.Description if ($tooltip -eq '') { $tooltip = $_.Location } if ($tooltip -eq '') { $tooltip = $_.Caption } New-CompletionResult $_.Name $tooltip } } # # .SYNOPSIS # # Complete the -Name argument to *-PrinterDriver cmdlets # function PrinterDriverNameArgumentCompletion { param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter) $optionalCn = @{} $cn = $fakeBoundParameter["ComputerName"] if($cn) { $optionalCn.ComputerName = $cn } Get-PrinterDriver -Name "$wordToComplete*" @optionalCn | Sort-Object Name | ForEach-Object { $tooltip = $_.Description if (!$tooltip) { $tooltip = $_.Status } if (!$tooltip) { $tooltip = $_.Manufacturer } New-CompletionResult $_.Name $tooltip } } # # .SYNOPSIS # # Complete the -Name argument to *-PrinterPort cmdlets # function PrinterPortArgumentCompletion { param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter) $optionalCn = @{} $cn = $fakeBoundParameter["ComputerName"] if($cn) { $optionalCn.ComputerName = $cn } Get-PrinterPort -Name "$wordToComplete*" @optionalCn | Sort-Object Name | ForEach-Object { New-CompletionResult $_.Name $_.Description } } Register-ArgumentCompleter ` -Command ('Get-Printer', 'Remove-Printer', 'Set-Printer') ` -Parameter 'Name' ` -Description 'Complete printer names' ` -ScriptBlock $function:PrinterNameArgumentCompletion Register-ArgumentCompleter ` -Command ( 'Add-PrinterPort', 'Get-PrintConfiguration', 'Get-PrinterProperty', 'Get-PrintJob', 'Remove-PrintJob', 'Restart-PrintJob', 'Resume-PrintJob', 'Set-PrintConfiguration', 'Set-PrinterProperty', 'Suspend-PrintJob' ) ` -Parameter 'PrinterName' ` -Description 'Complete printer names' ` -ScriptBlock $function:PrinterNameArgumentCompletion Register-ArgumentCompleter ` -Command ('Get-PrinterDriver', 'Remove-PrinterDriver') ` -Parameter 'Name' ` -Description 'Complete printer driver names.' ` -ScriptBlock $function:PrinterDriverNameArgumentCompletion Register-ArgumentCompleter ` -Command ('Get-PrinterPort', 'Remove-PrinterPort') ` -Parameter 'Name' ` -Description 'Complete printer port names.' ` -ScriptBlock $function:PrinterPortArgumentCompletion |