functions/Test-DbaSqlManagementObject.ps1
function Test-DbaSqlManagementObject { <# .SYNOPSIS Tests to see if the SMO version specified exists on the computer. .DESCRIPTION The Test-DbaSqlManagementObject returns True if the Version is on the computer, and False if it does not exist. .PARAMETER ComputerName The name of the target you would like to check .PARAMETER Credential This command uses Windows credentials. This parameter allows you to connect remotely as a different user. .PARAMETER VersionNumber This is the specific version number you are looking for and the return will be True. .PARAMETER Silent Use this switch to disable any kind of verbose messages .NOTES Tags: SMO Original Author: Ben Miller (@DBAduck - http://dbaduck.com) Website: https://dbatools.io Copyright: (C) Chrissy LeMaire, clemaire@gmail.com License: GNU GPL v3 https://opensource.org/licenses/GPL-3.0 .LINK https://dbatools.io/Test-DbaSqlManagementObject .EXAMPLE Test-DbaSqlManagementObject -VersionNumber 13 Returns True if the version exists, if it does not exist it will return False #> [CmdletBinding()] param ( [parameter(ValueFromPipeline)] [Alias("ServerInstance", "SqlServer", "SqlInstance")] [DbaInstanceParameter[]]$ComputerName = $env:COMPUTERNAME, [PSCredential] $Credential, [Parameter(Mandatory)] [int[]]$VersionNumber, [switch]$Silent ) begin { $scriptblock = { foreach ($number in $args) { $smolist = (Get-ChildItem -Path "$($env:SystemRoot)\assembly\GAC_MSIL\Microsoft.SqlServer.Smo" -Filter "$number.*" | Sort-Object Name -Descending).Name if ($smolist) { [pscustomobject]@{ ComputerName = $env:COMPUTERNAME Version = $number Exists = $true } } else { [pscustomobject]@{ ComputerName = $env:COMPUTERNAME Version = $number Exists = $false } } } } } process { foreach ($computer in $ComputerName.ComputerName) { try { Invoke-Command2 -ComputerName $computer -ScriptBlock $scriptblock -Credential $Credential -ArgumentList $VersionNumber -ErrorAction Stop } catch { Stop-Function -Continue -Message "Faiure" -ErrorRecord $_ -Target $ComputerName } } } } |