forked from dataplat/dbatools-templates
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Get-DbaSmoObject.ps1
83 lines (64 loc) · 2.99 KB
/
Get-DbaSmoObject.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
FUNCTION Get-DbaJobCategory {
<#
.SYNOPSIS
Gets SQL Agent Job Category information for each instance(s) of SQL Server.
.DESCRIPTION
The Get-DbaJobCategory returns connected SMO object for SQL Agent Job Category information for each instance(s) of SQL Server.
.PARAMETER SqlInstance
SQL Server name or SMO object representing the SQL Server to connect to. This can be a collection and recieve pipeline input to allow the function
to be executed against multiple SQL Server instances.
.PARAMETER SqlCredential
SqlCredential object to connect as. If not specified, current Windows login will be used.
.PARAMETER Silent
Use this switch to disable any kind of verbose messages
.NOTES
Original Author: FirstName LastName (@twitterhandle and/or website)
Tags: Migration, Backup
Website: https://dbatools.io
Copyright: (C) Chrissy LeMaire, [email protected]
License: GNU GPL v3 https://opensource.org/licenses/GPL-3.0
.LINK
https://dbatools.io/Get-DbaJobCategory
.EXAMPLE
Get-DbaJobCategory -SqlInstance localhost
Returns all SQL Agent Job Categories on the local default SQL Server instance
.EXAMPLE
Get-DbaJobCategory -SqlInstance localhost, sql2016
Returns all SQL Agent Job Categories for the local and sql2016 SQL Server instances
#>
[CmdletBinding()]
param (
[parameter(Position = 0, Mandatory = $true, ValueFromPipeline = $True)]
[Alias("ServerInstance", "SqlServer")]
[object[]]$SqlInstance,
[System.Management.Automation.PSCredential]$SqlCredential,
[switch]$Silent
)
dynamicparam { if ($SqlInstance) { Get-ParamSqlAgentCategories -SqlServer $SqlInstance[0] -SqlCredential $SqlCredential } }
begin {
$jobcategories = $psboundparameters.JobCategories
}
process {
foreach ($instance in $SqlInstance) {
Write-Message -Level Verbose -Message "Attempting to connect to $instance"
try {
$server = Connect-SqlServer -SqlServer $instance -SqlCredential $SqlCredential
}
catch {
Stop-Function -Message "Can't connect to $instance or access denied. Skipping." -Continue
}
$categories = $server.JobServer.JobCategories
if ($jobcategories) {
$categories = $categories | Where-Object { $_.Name -in $jobcategories }
}
foreach ($object in $categories) {
Write-Message -Level Verbose -Message "Processing $object"
Add-Member -InputObject $object -MemberType NoteProperty ComputerName -value $sever.NetName
Add-Member -InputObject $object -MemberType NoteProperty InstanceName -value $sever.ServiceName
Add-Member -InputObject $object -MemberType NoteProperty SqlInstance -value $sever.DomainInstanceName
# Select all of the columns you'd like to show
Select-DefaultView -InputObject $object -Property ComputerName, InstanceName, SqlInstance, ID, Name, Whatever, Whatever2
}
}
}
}