-
Notifications
You must be signed in to change notification settings - Fork 33
/
PrintManagement.ArgumentCompleters.ps1
104 lines (86 loc) · 2.85 KB
/
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
#
# .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