dbatools.psm1
<#
Attempt to load all versions of SMO from vNext to 2005 - this is why RequiredAssemblies can't be used. Attempt to load all assemblies that will be needed in the module. Not all versions support supporting assemblies, so ignore and let the command catch it. This takes about 11ms on a newer machine. #> $smoversions = "14.0.0.0", "13.0.0.0", "12.0.0.0", "11.0.0.0", "10.0.0.0", "9.0.242.0", "9.0.0.0" foreach ($smoversion in $smoversions) { try { Add-Type -AssemblyName "Microsoft.SqlServer.Smo, Version=$smoversion, Culture=neutral, PublicKeyToken=89845dcd8080cc91" -ErrorAction Stop $smoadded = $true } catch { $smoadded = $false } if ($smoadded -eq $true) { break } } if ($smoadded -eq $false) { throw "Can't load SMO assemblies. You must have SQL Server Management Studio installed to proceed." } $assemblies = "Management.Common", "Dmf", "Instapi", "SqlWmiManagement", "ConnectionInfo", "SmoExtended", "SqlTDiagM", "Management.Utility", "SString", "Management.RegisteredServers", "Management.Sdk.Sfc", "SqlEnum", "RegSvrEnum", "WmiEnum", "ServiceBrokerEnum", "Management.XEvent", "ConnectionInfoExtended", "Management.Collector", "Management.CollectorEnum", "Management.Dac", "Management.DacEnum", "Management.IntegrationServices" foreach ($assembly in $assemblies) { try { Add-Type -AssemblyName "Microsoft.SqlServer.$assembly, Version=$smoversion, Culture=neutral, PublicKeyToken=89845dcd8080cc91" -ErrorAction Stop } catch { # Don't care } } <# Do the rest of the loading #> # All internal functions privately avaialble within the toolset foreach ($function in (Get-ChildItem "$PSScriptRoot\internal\*.ps1")) { . $function } # All exported functions foreach ($function in (Get-ChildItem "$PSScriptRoot\functions\*.ps1")) { . $function } # Not supporting the provider path at this time # if (((Resolve-Path .\).Path).StartsWith("SQLSERVER:\")) { throw "Please change to another drive and reload the module." } # I renamed this function to be more accurate Set-Alias -Name Reset-SqlSaPassword -Value Reset-SqlAdmin Set-Alias -Name Copy-SqlUserDefinedMessage -Value Copy-SqlCustomError Set-Alias -Name Copy-SqlJobServer -Value Copy-SqlServerAgent Set-Alias -Name Restore-HallengrenBackup -Value Restore-SqlBackupFromDirectory Set-Alias -Name Show-SqlMigrationConstraint -Value Test-SqlMigrationConstraint Set-Alias -Name Test-SqlDiskAllocation -Value Test-DbaDiskAllocation Set-Alias -Name Get-DiskSpace -Value Get-DbaDiskSpace Set-Alias -Name Get-SqlMaxMemory -Value Get-DbaMaxMemory Set-Alias -Name Set-SqlMaxMemory -Value Set-DbaMaxMemory |