PrintManagement.ArgumentCompleters.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#
# .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