dbatools.psm1
$start = Get-Date if (($PSVersionTable.PSVersion.Major -lt 6) -or ($PSVersionTable.Keys -contains "Platform" -and $PSVersionTable.Platform -eq "Win32NT")) { $script:isWindows = $true } else { $script:isWindows = $false } if ($PSVersionTable.PSVersion.Major -lt 3) { # requires doesnt work on modules throw "This module only supports PowerShell v3 and above" } #region Import helper functions function Import-ModuleFile { <# .SYNOPSIS Helps import dbatools files according to configuration .DESCRIPTION Helps import dbatools files according to configuration Always dotsource this function! .PARAMETER Path The full path to the file to import .EXAMPLE PS C:\> Import-ModuleFile -Path $function.FullName Imports the file stored at '$function.FullName' #> [CmdletBinding()] param ( $Path ) if ($script:doDotSource) { . (Resolve-Path -Path $Path) } else { $ExecutionContext.InvokeCommand.InvokeScript($false, ([scriptblock]::Create([io.file]::ReadAllText((Resolve-Path -Path $Path).ProviderPath))), $null, $null) } } function Write-ImportTime { <# .SYNOPSIS Writes an entry to the import module time debug list .DESCRIPTION Writes an entry to the import module time debug list .PARAMETER Text The message to write .EXAMPLE PS C:\> Write-ImportTime -Text "Starting SMO Import" Adds the message "Starting SMO Import" to the debug list #> [CmdletBinding()] param ( [string]$Text, $Timestamp = (Get-Date) ) if ($dbatools_disableTimeMeasurements) { return } if (-not $script:dbatools_ImportPerformance) { $script:dbatools_ImportPerformance = @() } if (([System.Management.Automation.PSTypeName]'Sqlcollaborative.Dbatools.Configuration.Config').Type -eq $null) { $script:dbatools_ImportPerformance += New-Object PSObject -Property @{ Time = $timestamp; Action = $Text } } else { if ([Sqlcollaborative.Dbatools.dbaSystem.DebugHost]::ImportTimeEntries.Count -eq 0) { foreach ($entry in $script:dbatools_ImportPerformance) { [Sqlcollaborative.Dbatools.dbaSystem.DebugHost]::ImportTimeEntries.Add((New-Object Sqlcollaborative.Dbatools.dbaSystem.StartTimeEntry($entry.Action, $entry.Time, ([System.Management.Automation.Runspaces.Runspace]::DefaultRunspace.InstanceId)))) } } [Sqlcollaborative.Dbatools.dbaSystem.DebugHost]::ImportTimeEntries.Add((New-Object Sqlcollaborative.Dbatools.dbaSystem.StartTimeEntry($Text, $timestamp, ([System.Management.Automation.Runspaces.Runspace]::DefaultRunspace.InstanceId)))) } } Write-ImportTime -Text "Start" -Timestamp $start Write-ImportTime -Text "Loading import helper functions" #endregion Import helper functions # Not supporting the provider path at this time 2/28/2017 if (((Resolve-Path .\).Path).StartsWith("SQLSERVER:\")) { Write-Warning "SQLSERVER:\ provider not supported. Please change to another directory and reload the module." Write-Warning "Going to continue loading anyway, but expect issues." } Write-ImportTime -Text "Resolved path to not SQLSERVER PSDrive" $script:PSModuleRoot = $PSScriptRoot if (($PSVersionTable.Keys -contains "PSEdition") -and ($PSVersionTable.PSEdition -ne 'Desktop')) { $script:core = $true } else { $script:core = $false } #region Import Defines $dbatoolsSystemUserNode = Get-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\WindowsPowerShell\dbatools\System" -ErrorAction Ignore $dbatoolsSystemSystemNode = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsPowerShell\dbatools\System" -ErrorAction Ignore #region Dot Sourcing # Detect whether at some level dotsourcing was enforced $script:doDotSource = $false if ($dbatools_dotsourcemodule) { $script:doDotSource = $true } if ($dbatoolsSystemSystemNode.DoDotSource) { $script:doDotSource = $true } if ($dbatoolsSystemUserNode.DoDotSource) { $script:doDotSource = $true } #endregion Dot Sourcing #region Copy DLL Mode $script:copyDllMode = $false if ($dbatools_copydllmode) { $script:copyDllMode = $true } if ($dbatoolsSystemSystemNode.CopyDllMode) { $script:copyDllMode = $true } if ($dbatoolsSystemUserNode.CopyDllMode) { $script:copyDllMode = $true } #endregion Copy DLL Mode #region Always Compile $script:alwaysBuildLibrary = $false if ($dbatools_alwaysbuildlibrary) { $script:alwaysBuildLibrary = $true } if ($dbatoolsSystemSystemNode.AlwaysBuildLibrary) { $script:alwaysBuildLibrary = $true } if ($dbatoolsSystemUserNode.AlwaysBuildLibrary) { $script:alwaysBuildLibrary = $true } #endregion Always Compile #region Serial Import $script:serialImport = $false if ($dbatools_serialimport) { $script:serialImport = $true } if ($dbatoolsSystemSystemNode.SerialImport) { $script:serialImport = $true } if ($dbatoolsSystemUserNode.SerialImport) { $script:serialImport = $true } #endregion Serial Import #region Multi File Import $script:multiFileImport = $false if ($dbatools_multiFileImport) { $script:multiFileImport = $true } if ($dbatoolsSystemSystemNode.MultiFileImport) { $script:multiFileImport = $true } if ($dbatoolsSystemUserNode.MultiFileImport) { $script:multiFileImport = $true } if ((Test-Path -Path "$script:PSModuleRoot\.git") -or $dbatools_enabledebug) { $script:multiFileImport = $true; $script:serialImport = $true } if ((Test-Path -Path "$script:PSModuleRoot/.git") -or $dbatools_enabledebug) { $script:multiFileImport = $true; $script:serialImport = $true } #endregion Multi File Import Write-ImportTime -Text "Validated defines" #endregion Import Defines if (($PSVersionTable.PSVersion.Major -le 5) -or $script:isWindows) { Get-ChildItem -Path (Resolve-Path "$script:PSModuleRoot\bin\") -Filter "*.dll" -Recurse | Unblock-File -ErrorAction Ignore Write-ImportTime -Text "Unblocking Files" } $script:DllRoot = (Resolve-Path -Path "$script:PSModuleRoot\bin\").ProviderPath <# # Removed this because it doesn't seem to work well xplat and on win7 and it doesn't provide enough value # Define folder in which to copy dll files before importing if (-not $script:copyDllMode) { $script:DllRoot = (Resolve-Path "$script:PSModuleRoot\bin\") } else { $libraryTempPath = (Resolve-Path "$($env:TEMP)\dbatools-$(Get-Random -Minimum 1000000 -Maximum 9999999)") while (Test-Path -Path $libraryTempPath) { $libraryTempPath = (Resolve-Path "$($env:TEMP)\dbatools-$(Get-Random -Minimum 1000000 -Maximum 9999999)") } $script:DllRoot = $libraryTempPath $null = New-Item -Path $libraryTempPath -ItemType Directory } #> if (-not ([System.Management.Automation.PSTypeName]'Microsoft.SqlServer.Management.Smo.Server').Type) { . Import-ModuleFile "$script:PSModuleRoot\internal\scripts\smoLibraryImport.ps1" Write-ImportTime -Text "Starting import SMO libraries" } <# Do the rest of the loading #> # This technique helps a little bit # https://becomelotr.wordpress.com/2017/02/13/expensive-dot-sourcing/ # Load our own custom library # Should always come before function imports . Import-ModuleFile "$script:PSModuleRoot\bin\library.ps1" . Import-ModuleFile "$script:PSModuleRoot\bin\typealiases.ps1" Write-ImportTime -Text "Loading dbatools library" # Tell the library where the module is based, just in case [Sqlcollaborative.Dbatools.dbaSystem.SystemHost]::ModuleBase = $script:PSModuleRoot if ($script:multiFileImport) { # All internal functions privately available within the toolset foreach ($function in (Get-ChildItem -Path (Resolve-Path -Path "$script:PSModuleRoot\internal\functions\") -Recurse | Where-Object Extension -EQ '.ps1')) { . Import-ModuleFile $function.FullName } Write-ImportTime -Text "Loading Internal Commands" . Import-ModuleFile -Path (Resolve-Path -Path "$script:PSModuleRoot\internal\scripts\cmdlets.ps1") Write-ImportTime -Text "Registering cmdlets" # All exported functions foreach ($function in (Get-ChildItem -Path (Resolve-Path -Path "$script:PSModuleRoot\functions\") -Recurse | Where-Object Extension -EQ '.ps1')) { . Import-ModuleFile $function.FullName } Write-ImportTime -Text "Loading Public Commands" } else { . (Resolve-Path -Path "$script:PSModuleRoot\allcommands.ps1") Write-ImportTime -Text "Loading Public and Private Commands" . Import-ModuleFile (Resolve-Path -Path "$script:PSModuleRoot\internal\scripts\cmdlets.ps1") Write-ImportTime -Text "Registering cmdlets" } # Load configuration system # Should always go after library and path setting . Import-ModuleFile "$script:PSModuleRoot\internal\configurations\configuration.ps1" Write-ImportTime -Text "Configuration System" # Resolving the path was causing trouble when it didn't exist yet # Not converting the path separators based on OS was also an issue. if (-not ([Sqlcollaborative.Dbatools.Message.LogHost]::LoggingPath)) { [Sqlcollaborative.Dbatools.Message.LogHost]::LoggingPath = Join-DbaPath $script:AppData "PowerShell" "dbatools" } # Run all optional code # Note: Each optional file must include a conditional governing whether it's run at all. # Validations were moved into the other files, in order to prevent having to update dbatools.psm1 every time # 96ms foreach ($function in (Get-ChildItem -Path (Resolve-Path -Path "$script:PSModuleRoot\optional\*.ps1"))) { . Import-ModuleFile $function.FullName } Write-ImportTime -Text "Loading Optional Commands" # Process TEPP parameters . Import-ModuleFile -Path (Resolve-Path -Path "$script:PSModuleRoot\internal\scripts\insertTepp.ps1") Write-ImportTime -Text "Loading TEPP" # Process transforms . Import-ModuleFile -Path (Resolve-Path -Path "$script:PSModuleRoot\internal\scripts\message-transforms.ps1") Write-ImportTime -Text "Loading Message Transforms" # Load scripts that must be individually run at the end # #-------------------------------------------------------# # Start the logging system (requires the configuration system up and running) . Import-ModuleFile -Path (Resolve-Path -Path "$script:PSModuleRoot\internal\scripts\logfilescript.ps1") Write-ImportTime -Text "Script: Logging" # Start the tepp asynchronous update system (requires the configuration system up and running) . Import-ModuleFile -Path (Resolve-Path -Path "$script:PSModuleRoot\internal\scripts\updateTeppAsync.ps1") Write-ImportTime -Text "Script: Asynchronous TEPP Cache" # Start the maintenance system (requires pretty much everything else already up and running) . Import-ModuleFile -Path (Resolve-Path -Path "$script:PSModuleRoot\internal\scripts\dbatools-maintenance.ps1") Write-ImportTime -Text "Script: Maintenance" #region Aliases # I renamed this function to be more accurate - 1ms # changed to a script var so it can be used in the Rename-DbatoolsCommand $script:renames = @( @{ "AliasName" = "Copy-SqlAgentCategory" "Definition" = "Copy-DbaAgentJobCategory" }, @{ "AliasName" = "Copy-SqlAlert" "Definition" = "Copy-DbaAgentAlert" }, @{ "AliasName" = "Copy-SqlAudit" "Definition" = "Copy-DbaServerAudit" }, @{ "AliasName" = "Copy-SqlAuditSpecification" "Definition" = "Copy-DbaServerAuditSpecification" }, @{ "AliasName" = "Copy-SqlBackupDevice" "Definition" = "Copy-DbaBackupDevice" }, @{ "AliasName" = "Copy-SqlCentralManagementServer" "Definition" = "Copy-DbaCmsRegServer" }, @{ "AliasName" = "Copy-SqlCredential" "Definition" = "Copy-DbaCredential" }, @{ "AliasName" = "Copy-SqlCustomError" "Definition" = "Copy-DbaCustomError" }, @{ "AliasName" = "Copy-SqlDatabase" "Definition" = "Copy-DbaDatabase" }, @{ "AliasName" = "Copy-SqlDatabaseAssembly" "Definition" = "Copy-DbaDbAssembly" }, @{ "AliasName" = "Copy-SqlDatabaseMail" "Definition" = "Copy-DbaDbMail" }, @{ "AliasName" = "Copy-SqlDataCollector" "Definition" = "Copy-DbaDataCollector" }, @{ "AliasName" = "Copy-SqlEndpoint" "Definition" = "Copy-DbaEndpoint" }, @{ "AliasName" = "Copy-SqlExtendedEvent" "Definition" = "Copy-DbaXESession" }, @{ "AliasName" = "Copy-SqlJob" "Definition" = "Copy-DbaAgentJob" }, @{ "AliasName" = "Copy-SqlJobServer" "Definition" = "Copy-SqlServerAgent" }, @{ "AliasName" = "Copy-SqlLinkedServer" "Definition" = "Copy-DbaLinkedServer" }, @{ "AliasName" = "Copy-SqlLogin" "Definition" = "Copy-DbaLogin" }, @{ "AliasName" = "Copy-SqlOperator" "Definition" = "Copy-DbaAgentOperator" }, @{ "AliasName" = "Copy-SqlPolicyManagement" "Definition" = "Copy-DbaPolicyManagement" }, @{ "AliasName" = "Copy-SqlProxyAccount" "Definition" = "Copy-DbaAgentProxy" }, @{ "AliasName" = "Copy-SqlResourceGovernor" "Definition" = "Copy-DbaResourceGovernor" }, @{ "AliasName" = "Copy-SqlServerAgent" "Definition" = "Copy-DbaAgentServer" }, @{ "AliasName" = "Copy-SqlServerTrigger" "Definition" = "Copy-DbaServerTrigger" }, @{ "AliasName" = "Copy-SqlSharedSchedule" "Definition" = "Copy-DbaAgentSchedule" }, @{ "AliasName" = "Copy-SqlSpConfigure" "Definition" = "Copy-DbaSpConfigure" }, @{ "AliasName" = "Copy-SqlSsisCatalog" "Definition" = "Copy-DbaSsisCatalog" }, @{ "AliasName" = "Copy-SqlSysDbUserObjects" "Definition" = "Copy-DbaSysDbUserObject" }, @{ "AliasName" = "Copy-SqlUserDefinedMessage" "Definition" = "Copy-SqlCustomError" }, @{ "AliasName" = "Expand-SqlTLogResponsibly" "Definition" = "Expand-DbaDbLogFile" }, @{ "AliasName" = "Export-SqlLogin" "Definition" = "Export-DbaLogin" }, @{ "AliasName" = "Export-SqlSpConfigure" "Definition" = "Export-DbaSpConfigure" }, @{ "AliasName" = "Export-SqlUser" "Definition" = "Export-DbaUser" }, @{ "AliasName" = "Find-SqlDuplicateIndex" "Definition" = "Find-DbaDuplicateIndex" }, @{ "AliasName" = "Find-SqlUnusedIndex" "Definition" = "Find-DbaDbUnusedIndex" }, @{ "AliasName" = "Get-SqlMaxMemory" "Definition" = "Get-DbaMaxMemory" }, @{ "AliasName" = "Get-SqlRegisteredServerName" "Definition" = "Get-DbaCmsRegServer" }, @{ "AliasName" = "Get-DbaCmsRegServerName" "Definition" = "Get-DbaCmsRegServer" }, @{ "AliasName" = "Get-SqlServerKey" "Definition" = "Get-DbaProductKey" }, @{ "AliasName" = "Import-SqlSpConfigure" "Definition" = "Import-DbaSpConfigure" }, @{ "AliasName" = "Install-SqlWhoIsActive" "Definition" = "Install-DbaWhoIsActive" }, @{ "AliasName" = "Remove-SqlDatabaseSafely" "Definition" = "Remove-DbaDatabaseSafely" }, @{ "AliasName" = "Remove-SqlOrphanUser" "Definition" = "Remove-DbaDbOrphanUser" }, @{ "AliasName" = "Repair-SqlOrphanUser" "Definition" = "Repair-DbaDbOrphanUser" }, @{ "AliasName" = "Reset-SqlAdmin" "Definition" = "Reset-DbaAdmin" }, @{ "AliasName" = "Reset-SqlSaPassword" "Definition" = "Reset-SqlAdmin" }, @{ "AliasName" = "Restore-SqlBackupFromDirectory" "Definition" = "Restore-DbaBackupFromDirectory" }, @{ "AliasName" = "Set-SqlMaxMemory" "Definition" = "Set-DbaMaxMemory" }, @{ "AliasName" = "Set-SqlTempDbConfiguration" "Definition" = "Set-DbaTempdbConfig" }, @{ "AliasName" = "Show-SqlDatabaseList" "Definition" = "Show-DbaDbList" }, @{ "AliasName" = "Show-SqlMigrationConstraint" "Definition" = "Test-SqlMigrationConstraint" }, @{ "AliasName" = "Show-SqlServerFileSystem" "Definition" = "Show-DbaServerFileSystem" }, @{ "AliasName" = "Show-SqlWhoIsActive" "Definition" = "Invoke-DbaWhoIsActive" }, @{ "AliasName" = "Start-SqlMigration" "Definition" = "Start-DbaMigration" }, @{ "AliasName" = "Sync-SqlLoginPermissions" "Definition" = "Sync-DbaLoginPermission" }, @{ "AliasName" = "Sync-DbaSqlLoginPermission" "Definition" = "Sync-DbaLoginPermission" }, @{ "AliasName" = "Test-SqlConnection" "Definition" = "Test-DbaConnection" }, @{ "AliasName" = "Test-SqlDiskAllocation" "Definition" = "Test-DbaDiskAllocation" }, @{ "AliasName" = "Test-SqlMigrationConstraint" "Definition" = "Test-DbaMigrationConstraint" }, @{ "AliasName" = "Test-SqlNetworkLatency" "Definition" = "Test-DbaNetworkLatency" }, @{ "AliasName" = "Test-SqlPath" "Definition" = "Test-DbaPath" }, @{ "AliasName" = "Test-SqlTempDbConfiguration" "Definition" = "Test-DbaTempdbConfig" }, @{ "AliasName" = "Watch-SqlDbLogin" "Definition" = "Watch-DbaDbLogin" }, @{ "AliasName" = "Get-DiskSpace" "Definition" = "Get-DbaDiskSpace" }, @{ "AliasName" = "Restore-HallengrenBackup" "Definition" = "Restore-SqlBackupFromDirectory" }, @{ "AliasName" = "Get-DbaDatabaseFreeSpace" "Definition" = "Get-DbaDbSpace" }, @{ "AliasName" = "Set-DbaQueryStoreConfig" "Definition" = "Set-DbaDbQueryStoreOption" }, @{ "AliasName" = "Get-DbaQueryStoreConfig" "Definition" = "Get-DbaDbQueryStoreOption" }, @{ "AliasName" = "Connect-DbaServer" "Definition" = "Connect-DbaInstance" }, @{ "AliasName" = "Get-DbaInstance" "Definition" = "Connect-DbaInstance" }, @{ "AliasName" = "Get-DbaXEventSession" "Definition" = "Get-DbaXESession" }, @{ "AliasName" = "Get-DbaXEventSessionTarget" "Definition" = "Get-DbaXESessionTarget" }, @{ "AliasName" = "Read-DbaXEventFile" "Definition" = "Read-DbaXEFile" }, @{ "AliasName" = "Watch-DbaXEventSession" "Definition" = "Watch-DbaXESession" }, @{ "AliasName" = "Get-DbaDatabaseCertificate" "Definition" = "Get-DbaDbCertificate" }, @{ "AliasName" = "New-DbaDatabaseCertificate" "Definition" = "New-DbaDbCertificate" }, @{ "AliasName" = "Remove-DbaDatabaseCertificate" "Definition" = "Remove-DbaDbCertificate" }, @{ "AliasName" = "Restore-DbaDatabaseCertificate" "Definition" = "Restore-DbaDbCertificate" }, @{ "AliasName" = "Backup-DbaDatabaseCertificate" "Definition" = "Backup-DbaDbCertificate" }, @{ "AliasName" = "Find-DbaDatabaseGrowthEvent" "Definition" = "Find-DbaDbGrowthEvent" }, @{ "AliasName" = "Get-DbaTraceFile" "Definition" = "Get-DbaTrace" }, @{ "AliasName" = "Out-DbaDataTable" "Definition" = "ConvertTo-DbaDataTable" }, @{ "AliasName" = "Invoke-DbaCmd" "Definition" = "Invoke-DbaQuery" }, @{ "AliasName" = "Test-DbaVirtualLogFile" "Definition" = "Test-DbaDbVirtualLogFile" }, @{ "AliasName" = "Test-DbaFullRecoveryModel" "Definition" = "Test-DbaDbRecoveryModel" }, @{ "AliasName" = "Get-DbaDatabaseSnapshot" "Definition" = "Get-DbaDbSnapshot" }, @{ "AliasName" = "New-DbaDatabaseSnapshot" "Definition" = "New-DbaDbSnapshot" }, @{ "AliasName" = "Remove-DbaDatabaseSnapshot" "Definition" = "Remove-DbaDbSnapshot" }, @{ "AliasName" = "Restore-DbaDatabaseSnapshot" "Definition" = "Restore-DbaDbSnapshot" }, @{ "AliasName" = "Get-DbaLog" "Definition" = "Get-DbaErrorLog" }, @{ "AliasName" = "Test-DbaValidLogin" "Definition" = "Test-DbaWindowsLogin" }, @{ "AliasName" = "Get-DbaJobCategory" "Definition" = "Get-DbaAgentJobCategory" }, @{ "AliasName" = "Invoke-DbaDatabaseShrink" "Definition" = "Invoke-DbaDbShrink" }, @{ "AliasName" = "Get-DbaPolicy" "Definition" = "Get-DbaPbmPolicy" }, @{ "AliasName" = "Backup-DbaDatabaseMasterKey" "Definition" = "Backup-DbaDbMasterKey" }, @{ "AliasName" = "Get-DbaDatabaseMasterKey" "Definition" = "Get-DbaDbMasterKey" }, @{ "AliasName" = "Remove-DbaDatabaseMasterKey" "Definition" = "Remove-DbaDbMasterKey" }, @{ "AliasName" = "New-DbaDatabaseMasterKey" "Definition" = "New-DbaDbMasterKey" }, @{ "AliasName" = "Get-DbaDatabaseAssembly" "Definition" = "Get-DbaDbAssembly" }, @{ "AliasName" = "Copy-DbaDatabaseAssembly" "Definition" = "Copy-DbaDbAssembly" }, @{ "AliasName" = "Get-DbaDatabaseEncryption" "Definition" = "Get-DbaDbEncryption" }, @{ "AliasName" = "Get-DbaDatabaseFile" "Definition" = "Get-DbaDbFile" }, @{ "AliasName" = "Get-DbaDatabasePartitionFunction" "Definition" = "Get-DbaDbPartitionFunction" }, @{ "AliasName" = "Get-DbaDatabasePartitionScheme" "Definition" = "Get-DbaDbPartitionScheme" }, @{ "AliasName" = "Get-DbaDatabaseSpace" "Definition" = "Get-DbaDbSpace" }, @{ "AliasName" = "Get-DbaDatabaseState" "Definition" = "Get-DbaDbState" }, @{ "AliasName" = "Get-DbaDatabaseUdf" "Definition" = "Get-DbaDbUdf" }, @{ "AliasName" = "Get-DbaDatabaseUser" "Definition" = "Get-DbaDbUser" }, @{ "AliasName" = "Get-DbaDatabaseView" "Definition" = "Get-DbaDbView" }, @{ "AliasName" = "Invoke-DbaDatabaseClone" "Definition" = "Invoke-DbaDbClone" }, @{ "AliasName" = "Invoke-DbaDatabaseUpgrade" "Definition" = "Invoke-DbaDbUpgrade" }, @{ "AliasName" = "Set-DbaDatabaseOwner" "Definition" = "Set-DbaDbOwner" }, @{ "AliasName" = "Set-DbaDatabaseState" "Definition" = "Set-DbaDbState" }, @{ "AliasName" = "Show-DbaDatabaseList" "Definition" = "Show-DbaDbList" }, @{ "AliasName" = "Test-DbaDatabaseCollation" "Definition" = "Test-DbaDbCollation" }, @{ "AliasName" = "Test-DbaDatabaseCompatibility" "Definition" = "Test-DbaDbCompatibility" }, @{ "AliasName" = "Test-DbaDatabaseOwner" "Definition" = "Test-DbaDbOwner" }, @{ "AliasName" = "Clear-DbaSqlConnectionPool" "Definition" = "Clear-DbaConnectionPool" }, @{ "AliasName" = "Copy-DbaSqlDataCollector" "Definition" = "Copy-DbaDataCollector" }, @{ "AliasName" = "Copy-DbaSqlPolicyManagement" "Definition" = "Copy-DbaPolicyManagement" }, @{ "AliasName" = "Copy-DbaSqlServerAgent" "Definition" = "Copy-DbaAgentServer" }, @{ "AliasName" = "Get-DbaSqlBuildReference" "Definition" = "Get-DbaBuildReference" }, @{ "AliasName" = "Get-DbaSqlFeature" "Definition" = "Get-DbaFeature" }, @{ "AliasName" = "Get-DbaSqlInstanceProperty" "Definition" = "Get-DbaInstanceProperty" }, @{ "AliasName" = "Get-DbaSqlInstanceUserOption" "Definition" = "Get-DbaInstanceUserOption" }, @{ "AliasName" = "Get-DbaSqlManagementObject" "Definition" = "Get-DbaManagementObject" }, @{ "AliasName" = "Get-DbaSqlModule" "Definition" = "Get-DbaModule" }, @{ "AliasName" = "Get-DbaSqlProductKey" "Definition" = "Get-DbaProductKey" }, @{ "AliasName" = "Get-DbaSqlRegistryRoot" "Definition" = "Get-DbaRegistryRoot" }, @{ "AliasName" = "Get-DbaSqlService" "Definition" = "Get-DbaService" }, @{ "AliasName" = "Invoke-DbaSqlQuery" "Definition" = "Invoke-DbaQuery" }, @{ "AliasName" = "New-DbaSqlConnectionString" "Definition" = "New-DbaConnectionString" }, @{ "AliasName" = "New-DbaSqlConnectionStringBuilder" "Definition" = "New-DbaConnectionStringBuilder" }, @{ "AliasName" = "New-DbaSqlDirectory" "Definition" = "New-DbaDirectory" }, @{ "AliasName" = "Restart-DbaSqlService" "Definition" = "Restart-DbaService" }, @{ "AliasName" = "Start-DbaSqlService" "Definition" = "Start-DbaService" }, @{ "AliasName" = "Stop-DbaSqlService" "Definition" = "Stop-DbaService" }, @{ "AliasName" = "Test-DbaSqlBuild" "Definition" = "Test-DbaBuild" }, @{ "AliasName" = "Test-DbaSqlManagementObject" "Definition" = "Test-DbaManagementObject" }, @{ "AliasName" = "Test-DbaSqlPath" "Definition" = "Test-DbaPath" }, @{ "AliasName" = "Update-DbaSqlServiceAccount" "Definition" = "Update-DbaServiceAccount" }, @{ "AliasName" = "Set-DbaTempDbConfiguration" "Definition" = "Set-DbaTempdbConfig" }, @{ "AliasName" = "Test-DbaTempDbConfiguration" "Definition" = "Test-DbaTempdbConfig" }, @{ "AliasName" = "Export-DbaDacpac" "Definition" = "Export-DbaDacPackage" }, @{ "AliasName" = "Publish-DbaDacpac" "Definition" = "Publish-DbaDacPackage" }, @{ "AliasName" = "Get-DbaConfig" "Definition" = "Get-DbatoolsConfig" }, @{ "AliasName" = "Set-DbaConfig" "Definition" = "Set-DbatoolsConfig" }, @{ "AliasName" = "Get-DbaConfigValue" "Definition" = "Get-DbatoolsConfigValue" }, @{ "AliasName" = "Register-DbaConfig" "Definition" = "Register-DbatoolsConfig" }, @{ "AliasName" = "New-DbaPublishProfile" "Definition" = "New-DbaDacProfile" }, @{ "AliasName" = "Get-DbaDbQueryStoreOptions" "Definition" = "Get-DbaDbQueryStoreOption" }, @{ "AliasName" = "Set-DbaDbQueryStoreOptions" "Definition" = "Set-DbaDbQueryStoreOption" }, @{ "AliasName" = "Copy-DbaDatabaseMail" "Definition" = "Copy-DbaDbMail" }, @{ "AliasName" = "Get-DbaUserLevelPermission" "Definition" = "Get-DbaUserPermission" }, @{ "AliasName" = "Get-DbaDistributor" "Definition" = "Get-DbaRepDistributor" }, @{ "AliasName" = "Get-DbaTable" "Definition" = "Get-DbaDbTable" }, @{ "AliasName" = "Copy-DbaTableData" "Definition" = "Copy-DbaDbTableData" }, @{ "AliasName" = "Add-DbaRegisteredServer" "Definition" = "Add-DbaCmsRegServer" }, @{ "AliasName" = "Add-DbaRegisteredServerGroup" "Definition" = "Add-DbaCmsRegServerGroup" }, @{ "AliasName" = "Export-DbaRegisteredServer" "Definition" = "Export-DbaCmsRegServer" }, @{ "AliasName" = "Get-DbaRegisteredServerGroup" "Definition" = "Get-DbaCmsRegServerGroup" }, @{ "AliasName" = "Get-DbaRegisteredServerStore" "Definition" = "Get-DbaCmsRegServerStore" }, @{ "AliasName" = "Import-DbaRegisteredServer" "Definition" = "Import-DbaCmsRegServer" }, @{ "AliasName" = "Move-DbaRegisteredServer" "Definition" = "Move-DbaCmsRegServer" }, @{ "AliasName" = "Move-DbaRegisteredServerGroup" "Definition" = "Move-DbaCmsRegServerGroup" }, @{ "AliasName" = "Remove-DbaRegisteredServer" "Definition" = "Remove-DbaCmsRegServer" }, @{ "AliasName" = "Remove-DbaRegisteredServerGroup" "Definition" = "Remove-DbaCmsRegServerGroup" }, @{ "AliasName" = "Get-DbaLogShippingError" "Definition" = "Get-DbaDbLogShipError" }, @{ "AliasName" = "Invoke-DbaLogShipping" "Definition" = "Invoke-DbaDbLogShipping" }, @{ "AliasName" = "Invoke-DbaLogShippingRecovery" "Definition" = "Invoke-DbaDbLogShipRecovery" }, @{ "AliasName" = "Test-DbaLogShippingStatus" "Definition" = "Test-DbaDbLogShipStatus" }, @{ "AliasName" = "Get-DbaRoleMember" "Definition" = "Get-DbaDbRoleMember" }, @{ "AliasName" = "Get-DbaRestoreHistory" "Definition" = "Get-DbaDbRestoreHistory" }, @{ "AliasName" = "Expand-DbaTLogResponsibly" "Definition" = "Expand-DbaDbLogFile" }, @{ "AliasName" = "Test-DbaRecoveryModel" "Definition" = "Test-DbaDbRecoveryModel" }, @{ "AliasName" = "Copy-DbaAgentCategory" "Definition" = "Copy-DbaAgentJobCategory" }, @{ "AliasName" = "Copy-DbaAgentProxyAccount" "Definition" = "Copy-DbaAgentProxy" }, @{ "AliasName" = "Copy-DbaAgentSharedSchedule" "Definition" = "Copy-DbaAgentSchedule" }, @{ "AliasName" = "Copy-DbaCentralManagementServer" "Definition" = "Copy-DbaCmsRegServer" }, @{ "AliasName" = "Copy-DbaExtendedEvent" "Definition" = "Copy-DbaXESession" }, @{ "AliasName" = "Copy-DbaQueryStoreConfig" "Definition" = "Copy-DbaDbQueryStoreOption" }, @{ "AliasName" = "Import-DbaCsvToSql" "Definition" = "Import-DbaCsv" }, @{ "AliasName" = "Set-DbaJobOwner" "Definition" = "Set-DbaAgentJobOwner" }, @{ "AliasName" = "Get-DbaOrphanUser" "Definition" = "Get-DbaDbOrphanUser" }, @{ "AliasName" = "Remove-DbaOrphanUser" "Definition" = "Remove-DbaDbOrphanUser" }, @{ "AliasName" = "Repair-DbaOrphanUser" "Definition" = "Repair-DbaDbOrphanUser" }, @{ "AliasName" = "Test-DbaJobOwner" "Definition" = "Test-DbaAgentJobOwner" } ) $script:renames | ForEach-Object { if (-not (Test-Path Alias:$($_.AliasName))) { Set-Alias -Scope Global -Name $($_.AliasName) -Value $($_.Definition) } } # Leave forever $forever = @( @{ "AliasName" = "Attach-DbaDatabase" "Definition" = "Mount-DbaDatabase" }, @{ "AliasName" = "Detach-DbaDatabase" "Definition" = "Dismount-DbaDatabase" }, @{ "AliasName" = "Get-DbaRegisteredServer" "Definition" = "Get-DbaCmsRegServer" } ) $forever | ForEach-Object { if (-not (Test-Path Alias:$($_.AliasName))) { Set-Alias -Scope Global -Name $($_.AliasName) -Value $($_.Definition) } } #endregion Aliases #region Post-Import Cleanup Write-ImportTime -Text "Loading Aliases" # region Commands $script:xplat = @( 'Start-DbaMigration', 'Copy-DbaDatabase', 'Copy-DbaLogin', 'Copy-DbaAgentServer', 'Copy-DbaSpConfigure', 'Copy-DbaDbMail', 'Copy-DbaDbAssembly', 'Copy-DbaAgentSchedule', 'Copy-DbaAgentOperator', 'Copy-DbaAgentJob', 'Copy-DbaCustomError', 'Copy-DbaServerAuditSpecification', 'Copy-DbaEndpoint', 'Copy-DbaServerAudit', 'Copy-DbaServerRole', 'Copy-DbaResourceGovernor', 'Copy-DbaXESession', 'Copy-DbaServerTrigger', 'Copy-DbaCmsRegServer', 'Copy-DbaSysDbUserObject', 'Copy-DbaAgentProxy', 'Copy-DbaAgentAlert', 'Get-DbaDetachedDatabaseInfo', 'Restore-DbaBackupFromDirectory', 'Copy-DbaAgentJobCategory', 'Test-DbaPath', 'Export-DbaLogin', 'Watch-DbaDbLogin', 'Expand-DbaDbLogFile', 'Test-DbaMigrationConstraint', 'Test-DbaNetworkLatency', 'Find-DbaDuplicateIndex', 'Remove-DbaDatabaseSafely', 'Set-DbaTempdbConfig', 'Test-DbaTempdbConfig', 'Repair-DbaDbOrphanUser', 'Remove-DbaDbOrphanUser', 'Find-DbaDbUnusedIndex', 'Get-DbaDbSpace', 'Test-DbaDbOwner', 'Set-DbaDbOwner', 'Test-DbaAgentJobOwner', 'Set-DbaAgentJobOwner', 'Test-DbaDbVirtualLogFile', 'Get-DbaDbRestoreHistory', 'Get-DbaTcpPort', 'Test-DbaDbCompatibility', 'Test-DbaDbCollation', 'Test-DbaConnectionAuthScheme', 'Test-DbaServerName', 'Repair-DbaServerName', 'Stop-DbaProcess', 'Find-DbaOrphanedFile', 'Get-DbaAvailabilityGroup', 'Get-DbaLastGoodCheckDb', 'Get-DbaProcess', 'Get-DbaRunningJob', 'Set-DbaMaxDop', 'Test-DbaDbRecoveryModel', 'Test-DbaMaxDop', 'Remove-DbaBackup', 'Get-DbaPermission', 'Get-DbaLastBackup', 'Connect-DbaInstance', 'Get-DbaBackupHistory', 'Read-DbaBackupHeader', 'Test-DbaLastBackup', 'Get-DbaMaxMemory', 'Set-DbaMaxMemory', 'Get-DbaDbSnapshot', 'Remove-DbaDbSnapshot', 'Get-DbaDbRoleMember', 'Get-DbaServerRoleMember', 'Resolve-DbaNetworkName', 'Export-DbaAvailabilityGroup', 'Write-DbaDataTable', 'New-DbaDbSnapshot', 'Restore-DbaDbSnapshot', 'Get-DbaServerTrigger', 'Get-DbaDbTrigger', 'Get-DbaDbState', 'Set-DbaDbState', 'Get-DbaHelpIndex', 'Get-DbaAgentAlert', 'Get-DbaAgentOperator', 'Get-DbaSpConfigure', 'Rename-DbaLogin', 'Find-DbaAgentJob', 'Find-DbaDatabase', 'Get-DbaXESession', 'Test-DbaOptimizeForAdHoc', 'Find-DbaStoredProcedure', 'Measure-DbaBackupThroughput', 'Get-DbaDatabase', 'Find-DbaUserObject', 'Get-DbaDependency', 'Find-DbaCommand', 'Backup-DbaDatabase', 'New-DbaDirectory', 'Get-DbaDbQueryStoreOption', 'Set-DbaDbQueryStoreOption', 'Restore-DbaDatabase', 'Copy-DbaDbQueryStoreOption', 'Get-DbaExecutionPlan', 'Export-DbaExecutionPlan', 'Set-DbaSpConfigure', 'Test-DbaIdentityUsage', 'Get-DbaDbAssembly', 'Get-DbaAgentJob', 'Get-DbaCustomError', 'Get-DbaCredential', 'Get-DbaBackupDevice', 'Get-DbaAgentProxy', 'Get-DbaDbEncryption', 'Remove-DbaDatabase', 'Get-DbaQueryExecutionTime', 'Get-DbaTempdbUsage', 'Find-DbaDbGrowthEvent', 'Test-DbaLinkedServerConnection', 'Get-DbaDbFile', 'Read-DbaTransactionLog', 'Get-DbaDbTable', 'Invoke-DbaDbShrink', 'Get-DbaEstimatedCompletionTime', 'Get-DbaLinkedServer', 'New-DbaAgentJob', 'Get-DbaLogin', 'New-DbaScriptingOption', 'Save-DbaDiagnosticQueryScript', 'Invoke-DbaDiagnosticQuery', 'Export-DbaDiagnosticQuery', 'Invoke-DbaWhoIsActive', 'Set-DbaAgentJob', 'Remove-DbaAgentJob', 'New-DbaAgentJobStep', 'Set-DbaAgentJobStep', 'Remove-DbaAgentJobStep', 'New-DbaAgentSchedule', 'Set-DbaAgentSchedule', 'Remove-DbaAgentSchedule', 'Backup-DbaDbCertificate', 'Get-DbaDbCertificate', 'Get-DbaEndpoint', 'Get-DbaDbMasterKey', 'Get-DbaSchemaChangeHistory', 'Get-DbaServerAudit', 'Get-DbaServerAuditSpecification', 'Get-DbaProductKey', 'Get-DbatoolsLog', 'Restore-DbaDbCertificate', 'New-DbaDbCertificate', 'New-DbaDbMasterKey', 'New-DbaServiceMasterKey', 'Remove-DbaDbCertificate', 'Remove-DbaDbMasterKey', 'New-DbaConnectionStringBuilder', 'Get-DbaInstanceProperty', 'Get-DbaInstanceUserOption', 'New-DbaConnectionString', 'Get-DbaAgentSchedule', 'Read-DbaTraceFile', 'Get-DbaServerInstallDate', 'Backup-DbaDbMasterKey', 'Get-DbaAgentJobHistory', 'Get-DbaMaintenanceSolutionLog', 'Invoke-DbaDbLogShipRecovery', 'Find-DbaTrigger', 'Find-DbaView', 'Invoke-DbaDbUpgrade', 'Get-DbaDbUser', 'Get-DbaAgentLog', 'Get-DbaDbMailLog', 'Get-DbaDbMailHistory', 'Get-DbaDbView', 'Get-DbaDbUdf', 'Get-DbaDbPartitionFunction', 'Get-DbaDbPartitionScheme', 'Get-DbaDefaultPath', 'Get-DbaDbStoredProcedure', 'Test-DbaDbCompression', 'Mount-DbaDatabase', 'Dismount-DbaDatabase', 'Get-DbaAgReplica', 'Get-DbaAgDatabase', 'Get-DbaModule', 'Sync-DbaLoginPermission', 'New-DbaCredential', 'Get-DbaFile', 'Set-DbaDbCompression', 'Get-DbaTraceFlag', 'Invoke-DbaCycleErrorLog', 'Get-DbaAvailableCollation', 'Get-DbaUserPermission', 'Get-DbaAgHadr', 'Find-DbaSimilarTable', 'Get-DbaTrace', 'Get-DbaSuspectPage', 'Get-DbaWaitStatistic', 'Clear-DbaWaitStatistics', 'Get-DbaTopResourceUsage', 'New-DbaLogin', 'Get-DbaAgListener', 'Invoke-DbaDbClone', 'Disable-DbaTraceFlag', 'Enable-DbaTraceFlag', 'Start-DbaAgentJob', 'Stop-DbaAgentJob', 'New-DbaAgentProxy', 'Test-DbaDbLogShipStatus', 'Get-DbaXESessionTarget', 'New-DbaXESmartTargetResponse', 'New-DbaXESmartTarget', 'Get-DbaDbVirtualLogFile', 'Get-DbaBackupInformation', 'Start-DbaXESession', 'Stop-DbaXESession', 'Set-DbaDbRecoveryModel', 'Get-DbaDbRecoveryModel', 'Get-DbaWaitingTask', 'Remove-DbaDbUser', 'Get-DbaDump', 'Invoke-DbaAdvancedRestore', 'Format-DbaBackupInformation', 'Get-DbaAgentJobStep', 'Test-DbaBackupInformation', 'Invoke-DbaBalanceDataFiles', 'Select-DbaBackupInformation', 'Publish-DbaDacPackage', 'Copy-DbaDbTableData', 'Invoke-DbaQuery', 'Remove-DbaLogin', 'Get-DbaAgentJobCategory', 'New-DbaAgentJobCategory', 'Remove-DbaAgentJobCategory', 'Set-DbaAgentJobCategory', 'Get-DbaDbRole', 'Get-DbaServerRole', 'Find-DbaBackup', 'Remove-DbaXESession', 'New-DbaXESession', 'Get-DbaXEStore', 'New-DbaXESmartTableWriter', 'New-DbaXESmartReplay', 'New-DbaXESmartEmail', 'New-DbaXESmartQueryExec', 'Start-DbaXESmartTarget', 'Get-DbaDbOrphanUser', 'Get-DbaOpenTransaction', 'Get-DbaDbLogShipError', 'Test-DbaBuild', 'Get-DbaXESessionTemplate', 'ConvertTo-DbaXESession', 'Start-DbaTrace', 'Stop-DbaTrace', 'Remove-DbaTrace', 'Set-DbaLogin', 'Copy-DbaXESessionTemplate', 'Get-DbaXEObject', 'ConvertTo-DbaDataTable', 'Find-DbaDisabledIndex', 'Get-DbaXESmartTarget', 'Remove-DbaXESmartTarget', 'Stop-DbaXESmartTarget', 'Get-DbaCmsRegServerGroup', 'New-DbaDbUser', 'Measure-DbaDiskSpaceRequirement', 'New-DbaXESmartCsvWriter', 'Invoke-DbaXeReplay', 'Find-DbaInstance', 'Test-DbaDiskSpeed', 'Get-DbaDbExtentDiff', 'Read-DbaAuditFile', 'Get-DbaDbCompression', 'Invoke-DbaDbDecryptObject', 'Get-DbaDbForeignKey', 'Get-DbaDbCheckConstraint', 'Set-DbaAgentAlert', 'Get-DbaWaitResource', 'Get-DbaDbPageInfo', 'Get-DbaConnection', 'Test-DbaLoginPassword', 'Get-DbaErrorLogConfig', 'Set-DbaErrorLogConfig', 'Get-DbaPlanCache', 'Clear-DbaPlanCache', 'ConvertTo-DbaTimeline', 'Get-DbaDbMail', 'Get-DbaDbMailAccount', 'Get-DbaDbMailProfile', 'Get-DbaDbMailConfig', 'Get-DbaDbMailServer', 'New-DbaDbMailServer', 'New-DbaDbMailAccount', 'New-DbaDbMailProfile', 'Get-DbaResourceGovernor', 'Get-DbaRgResourcePool', 'Get-DbaRgWorkloadGroup', 'Get-DbaRgClassifierFunction', 'Export-DbaInstance', 'Invoke-DbatoolsRenameHelper', 'Measure-DbatoolsImport', 'Get-DbaDeprecatedFeature', 'Test-DbaDeprecatedFeature' 'Get-DbaDbFeatureUsage', 'Stop-DbaEndpoint', 'Start-DbaEndpoint', 'Set-DbaDbMirror', 'Repair-DbaDbMirror', 'Remove-DbaEndpoint', 'Remove-DbaDbMirrorMonitor', 'Remove-DbaDbMirror', 'New-DbaEndpoint', 'Invoke-DbaDbMirroring', 'Invoke-DbaDbMirrorFailover', 'Get-DbaDbMirrorMonitor', 'Get-DbaDbMirror', 'Add-DbaDbMirrorMonitor', 'Test-DbaEndpoint', 'Get-DbaDbSharePoint', 'Get-DbaDbMemoryUsage', 'Clear-DbaLatchStatistics', 'Get-DbaCpuRingBuffer', 'Get-DbaIoLatency', 'Get-DbaLatchStatistic', 'Get-DbaSpinLockStatistic', 'Add-DbaAgDatabase', 'Add-DbaAgListener', 'Add-DbaAgReplica', 'Grant-DbaAgPermission', 'Invoke-DbaAgFailover', 'Join-DbaAvailabilityGroup', 'New-DbaAvailabilityGroup', 'Remove-DbaAgDatabase', 'Remove-DbaAgListener', 'Remove-DbaAvailabilityGroup', 'Revoke-DbaAgPermission', 'Get-DbaDbCompatibility', 'Set-DbaDbCompatibility', 'Invoke-DbatoolsFormatter', 'Remove-DbaAgReplica', 'Resume-DbaAgDbDataMovement', 'Set-DbaAgListener', 'Set-DbaAgReplica', 'Set-DbaAvailabilityGroup', 'Set-DbaEndpoint', 'Suspend-DbaAgDbDataMovement', 'Sync-DbaAvailabilityGroup', 'Get-DbaMemoryCondition', 'Remove-DbaDbBackupRestoreHistory', 'New-DbaDatabase' 'New-DbaDacOption', 'Get-DbaDbccHelp', 'Get-DbaDbccMemoryStatus', 'Get-DbaDbccProcCache', 'Get-DbaDbccUserOption', 'Get-DbaAgentServer', 'Set-DbaAgentServer', 'Invoke-DbaDbccFreeCache' 'Export-DbatoolsConfig', 'Import-DbatoolsConfig', 'Reset-DbatoolsConfig', 'Unregister-DbatoolsConfig', 'Join-DbaPath', 'Resolve-DbaPath', 'Import-DbaCsv', 'Invoke-DbaDbDataMasking', 'New-DbaDbMaskingConfig', 'Get-DbaDbccSessionBuffer', 'Get-DbaDbccStatistic', 'Get-DbaDbDbccOpenTran', 'Invoke-DbaDbccDropCleanBuffer', 'Invoke-DbaDbDbccCheckConstraint', 'Invoke-DbaDbDbccCleanTable', 'Invoke-DbaDbDbccUpdateUsage', 'Get-DbaDbIdentity', 'Set-DbaDbIdentity', 'Get-DbaCmsRegServer', 'Get-DbaCmsRegServerStore', 'Add-DbaCmsRegServer', 'Add-DbaCmsRegServerGroup', 'Export-DbaCmsRegServer', 'Import-DbaCmsRegServer', 'Move-DbaCmsRegServer', 'Move-DbaCmsRegServerGroup', 'Remove-DbaCmsRegServer', 'Remove-DbaCmsRegServerGroup', # Config system 'Get-DbatoolsConfig', 'Get-DbatoolsConfigValue', 'Set-DbatoolsConfig', 'Register-DbatoolsConfig', # Data generator 'New-DbaDbDataGeneratorConfig', 'Invoke-DbaDbDataGenerator', 'Get-DbaRandomizedValue', 'Get-DbaRandomizedDatasetTemplate', 'Get-DbaRandomizedDataset', 'Get-DbaRandomizedType' ) $script:noncoresmo = @( # SMO issues 'Export-DbaUser', 'Get-DbaSsisExecutionHistory', 'Get-DbaRepDistributor', 'Copy-DbaPolicyManagement', 'Copy-DbaDataCollector', 'Copy-DbaSsisCatalog', 'New-DbaSsisCatalog', 'Get-DbaSsisEnvironmentVariable', 'Get-DbaPbmCategory', 'Get-DbaPbmCategorySubscription', 'Get-DbaPbmCondition', 'Get-DbaPbmObjectSet', 'Get-DbaPbmPolicy', 'Get-DbaPbmStore', 'Get-DbaRepPublication', 'Test-DbaRepLatency', 'Export-DbaRepServerSetting', 'Get-DbaRepServer' ) $script:windowsonly = @( # solvable filesystem issues or other workarounds 'Copy-DbaBackupDevice', 'Install-DbaSqlWatch', 'Uninstall-DbaSqlWatch', 'Get-DbaRegistryRoot', 'Install-DbaMaintenanceSolution', 'New-DbatoolsSupportPackage', 'Export-DbaScript', 'Get-DbaAgentJobOutputFile', 'Set-DbaAgentJobOutputFile', 'Get-DbaBuildReference', 'New-DbaDacProfile' 'Import-DbaXESessionTemplate', 'Export-DbaXESessionTemplate', 'Import-DbaSpConfigure', 'Export-DbaSpConfigure' 'Update-Dbatools', 'Install-DbaWhoIsActive', 'Install-DbaFirstResponderKit', 'Read-DbaXEFile', 'Watch-DbaXESession', 'Test-DbaMaxMemory', # can be fixed by not testing remote when linux is detected 'Rename-DbaDatabase', # can maybebe fixed by not remoting when linux is detected # CM and Windows functions 'Update-DbaInstance', 'Invoke-DbaAdvancedUpdate', 'Invoke-DbaPfRelog', 'Get-DbaPfDataCollectorCounter', 'Get-DbaPfDataCollectorCounterSample', 'Get-DbaPfDataCollector', 'Get-DbaPfDataCollectorSet', 'Start-DbaPfDataCollectorSet', 'Stop-DbaPfDataCollectorSet', 'Export-DbaPfDataCollectorSetTemplate', 'Get-DbaPfDataCollectorSetTemplate', 'Import-DbaPfDataCollectorSetTemplate', 'Remove-DbaPfDataCollectorSet', 'Add-DbaPfDataCollectorCounter', 'Remove-DbaPfDataCollectorCounter', 'Get-DbaPfAvailableCounter', 'Export-DbaXECsv', 'Get-DbaOperatingSystem', 'Get-DbaComputerSystem', 'Set-DbaPrivilege', 'Set-DbaTcpPort', 'Set-DbaCmConnection', 'Get-DbaUptime', 'Get-DbaMemoryUsage', 'Clear-DbaConnectionPool', 'Get-DbaLocaleSetting', 'Get-DbaFilestream', 'Enable-DbaFilestream', 'Disable-DbaFilestream', 'Get-DbaCpuUsage', 'Get-DbaPowerPlan', 'Get-DbaWsfcAvailableDisk', 'Get-DbaWsfcCluster', 'Get-DbaWsfcDisk', 'Get-DbaWsfcNetwork', 'Get-DbaWsfcNetworkInterface', 'Get-DbaWsfcNode', 'Get-DbaWsfcResource', 'Get-DbaWsfcResourceType', 'Get-DbaWsfcRole', 'Get-DbaWsfcSharedVolume', 'Export-DbaCredential', 'Export-DbaLinkedServer', 'Get-DbaFeature', 'Update-DbaServiceAccount', 'Remove-DbaClientAlias', 'Disable-DbaAgHadr', 'Enable-DbaAgHadr', 'Stop-DbaService', 'Start-DbaService', 'Restart-DbaService', 'New-DbaClientAlias', 'Get-DbaClientAlias', 'Remove-DbaNetworkCertificate', 'Enable-DbaForceNetworkEncryption', 'Disable-DbaForceNetworkEncryption', 'Get-DbaForceNetworkEncryption', 'Remove-DbaComputerCertificate', 'New-DbaComputerCertificate', 'Get-DbaComputerCertificate', 'Add-DbaComputerCertificate', 'Get-DbaNetworkCertificate', 'Set-DbaNetworkCertificate', 'Invoke-DbaDbLogShipping', 'New-DbaCmConnection', 'Get-DbaCmConnection', 'Remove-DbaCmConnection', 'Test-DbaCmConnection', 'Get-DbaCmObject', 'Set-DbaStartupParameter', 'Get-DbaNetworkActivity', 'Get-DbaServerProtocol' 'Watch-DbaUpdate', 'Uninstall-DbaWatchUpdate', 'Install-DbaWatchUpdate', 'Get-DbaPrivilege', 'Get-DbaMsdtc', 'Get-DbaPageFileSetting', 'Copy-DbaCredential', 'Test-DbaConnection', 'Reset-DbaAdmin', 'Copy-DbaLinkedServer', 'Get-DbaDiskSpace', 'Test-DbaDiskAllocation', 'Test-DbaPowerPlan', 'Set-DbaPowerPlan', 'Test-DbaDiskAlignment', 'Get-DbaStartupParameter', 'Get-DbaSpn', 'Test-DbaSpn', 'Set-DbaSpn', 'Remove-DbaSpn', 'Get-DbaService', 'Get-DbaClientProtocol', 'Get-DbaWindowsLog', # WPF 'Show-DbaServerFileSystem', 'Show-DbaDbList', # AD? 'Test-DbaWindowsLogin', 'Find-DbaLoginInGroup', # 3rd party non-core DLL or exe 'Export-DbaDacPackage', # relies on sqlpackage.exe # Unknown 'Get-DbaErrorLog', 'Get-DbaManagementObject', 'Test-DbaManagementObject' ) # If a developer or appveyor calls the psm1 directly, they want all functions # So do not explicity export because everything else is then implicity excluded if (-not $script:multiFileImport) { if (($PSVersionTable.Keys -contains "Platform")) { if ($PSVersionTable.Platform -ne "Win32NT") { Export-ModuleMember -Function $script:xplat } else { Export-ModuleMember -Function $script:xplat Export-ModuleMember -Function $script:windowsonly } } else { Export-ModuleMember -Function $script:xplat Export-ModuleMember -Function $script:windowsonly Export-ModuleMember -Function $script:noncoresmo } Export-ModuleMember -Alias $script:renames Export-ModuleMember -Alias $forever Export-ModuleMember -Cmdlet Select-DbaObject, Set-DbatoolsConfig Write-ImportTime -Text "Exported module member" } $timeout = 20000 $timeSpent = 0 while ($script:smoRunspace.Runspace.RunspaceAvailability -eq 'Busy') { Start-Sleep -Milliseconds 50 $timeSpent = $timeSpent + 50 if ($timeSpent -ge $timeout) { Write-Warning @" The module import has hit a timeout while waiting for some background tasks to finish. This may result in some commands not working as intended. This should not happen under reasonable circumstances, please file an issue at: https://github.com/sqlcollaborative/dbatools/issues Or contact us directly in the #dbatools channel of the SQL Server Community Slack Channel: https://dbatools.io/slack/ Timeout waiting for temporary runspaces reached! The Module import will complete, but some things may not work as intended "@ $global:smoRunspace = $script:smoRunspace break } } if ($script:smoRunspace) { $script:smoRunspace.Runspace.Close() $script:smoRunspace.Runspace.Dispose() $script:smoRunspace.Dispose() Remove-Variable -Name smoRunspace -Scope script } Write-ImportTime -Text "Waiting for runspaces to finish" if ($PSCommandPath -like "*.psm1") { Update-TypeData -AppendPath (Resolve-Path -Path "$script:PSModuleRoot\xml\dbatools.Types.ps1xml") Write-ImportTime -Text "Loaded type extensions" } #. Import-ModuleFile "$script:PSModuleRoot\bin\type-extensions.ps1" #Write-ImportTime -Text "Loaded type extensions" [Sqlcollaborative.Dbatools.dbaSystem.SystemHost]::ModuleImported = $true; if (Get-Module -Name sqlserver, sqlps) { if (Get-DbatoolsConfigValue -FullName Import.SqlpsCheck) { Write-Warning -Message 'SQLPS or SqlServer was previously imported during this session. If you encounter weird issues with dbatools, please restart PowerShell, then import dbatools without loading SQLPS or SqlServer first.' Write-Warning -Message 'To disable this message, type: Set-DbatoolsConfig -Name Import.SqlpsCheck -Value $false -PassThru | Register-DbatoolsConfig' } } #endregion Post-Import Cleanup # SIG # Begin signature block # MIIcYgYJKoZIhvcNAQcCoIIcUzCCHE8CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUg5bDybAuF8eGUVGgAmtte8r9 # xB6ggheRMIIFGjCCBAKgAwIBAgIQAsF1KHTVwoQxhSrYoGRpyjANBgkqhkiG9w0B # AQsFADByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD # VQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFz # c3VyZWQgSUQgQ29kZSBTaWduaW5nIENBMB4XDTE3MDUwOTAwMDAwMFoXDTIwMDUx # MzEyMDAwMFowVzELMAkGA1UEBhMCVVMxETAPBgNVBAgTCFZpcmdpbmlhMQ8wDQYD # VQQHEwZWaWVubmExETAPBgNVBAoTCGRiYXRvb2xzMREwDwYDVQQDEwhkYmF0b29s # czCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAI8ng7JxnekL0AO4qQgt # Kr6p3q3SNOPh+SUZH+SyY8EA2I3wR7BMoT7rnZNolTwGjUXn7bRC6vISWg16N202 # 1RBWdTGW2rVPBVLF4HA46jle4hcpEVquXdj3yGYa99ko1w2FOWzLjKvtLqj4tzOh # K7wa/Gbmv0Si/FU6oOmctzYMI0QXtEG7lR1HsJT5kywwmgcjyuiN28iBIhT6man0 # Ib6xKDv40PblKq5c9AFVldXUGVeBJbLhcEAA1nSPSLGdc7j4J2SulGISYY7ocuX3 # tkv01te72Mv2KkqqpfkLEAQjXgtM0hlgwuc8/A4if+I0YtboCMkVQuwBpbR9/6ys # Z+sCAwEAAaOCAcUwggHBMB8GA1UdIwQYMBaAFFrEuXsqCqOl6nEDwGD5LfZldQ5Y # MB0GA1UdDgQWBBRcxSkFqeA3vvHU0aq2mVpFRSOdmjAOBgNVHQ8BAf8EBAMCB4Aw # EwYDVR0lBAwwCgYIKwYBBQUHAwMwdwYDVR0fBHAwbjA1oDOgMYYvaHR0cDovL2Ny # bDMuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC1jcy1nMS5jcmwwNaAzoDGGL2h0 # dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMEwG # A1UdIARFMEMwNwYJYIZIAYb9bAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3 # LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQQBMIGEBggrBgEFBQcBAQR4MHYwJAYI # KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBOBggrBgEFBQcwAoZC # aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3VyZWRJ # RENvZGVTaWduaW5nQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQAD # ggEBANuBGTbzCRhgG0Th09J0m/qDqohWMx6ZOFKhMoKl8f/l6IwyDrkG48JBkWOA # QYXNAzvp3Ro7aGCNJKRAOcIjNKYef/PFRfFQvMe07nQIj78G8x0q44ZpOVCp9uVj # sLmIvsmF1dcYhOWs9BOG/Zp9augJUtlYpo4JW+iuZHCqjhKzIc74rEEiZd0hSm8M # asshvBUSB9e8do/7RhaKezvlciDaFBQvg5s0fICsEhULBRhoyVOiUKUcemprPiTD # xh3buBLuN0bBayjWmOMlkG1Z6i8DUvWlPGz9jiBT3ONBqxXfghXLL6n8PhfppBhn # daPQO8+SqF5rqrlyBPmRRaTz2GQwggUwMIIEGKADAgECAhAECRgbX9W7ZnVTQ7Vv # lVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdp # Q2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNVBAMTG0Rp # Z2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBaFw0yODEw # MjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUA # A4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/lqJ3bMtdx # 6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fTeyOU5JEj # lpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqHCN8M9eJN # YBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+bMt+dDk2 # DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLoLFH3c7y9 # hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIByTASBgNV # HRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEF # BQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRp # Z2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGlnaWNlcnQu # Y29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHoweDA6oDig # NoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9v # dENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0 # QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwAAgQwKjAo # BggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAKBghghkgB # hv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0jBBgwFoAU # Reuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7sDVoks/Mi # 0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGSdQ9RtG6l # jlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6r7VRwo0k # riTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo+MUSaJ/P # QMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qzsIzV6Q3d # 9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHqaGxEMrJm # oecYpJpkUe8wggZqMIIFUqADAgECAhADAZoCOv9YsWvW1ermF/BmMA0GCSqGSIb3 # DQEBBQUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAX # BgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0IEFzc3Vy # ZWQgSUQgQ0EtMTAeFw0xNDEwMjIwMDAwMDBaFw0yNDEwMjIwMDAwMDBaMEcxCzAJ # BgNVBAYTAlVTMREwDwYDVQQKEwhEaWdpQ2VydDElMCMGA1UEAxMcRGlnaUNlcnQg # VGltZXN0YW1wIFJlc3BvbmRlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC # ggEBAKNkXfx8s+CCNeDg9sYq5kl1O8xu4FOpnx9kWeZ8a39rjJ1V+JLjntVaY1sC # SVDZg85vZu7dy4XpX6X51Id0iEQ7Gcnl9ZGfxhQ5rCTqqEsskYnMXij0ZLZQt/US # s3OWCmejvmGfrvP9Enh1DqZbFP1FI46GRFV9GIYFjFWHeUhG98oOjafeTl/iqLYt # WQJhiGFyGGi5uHzu5uc0LzF3gTAfuzYBje8n4/ea8EwxZI3j6/oZh6h+z+yMDDZb # esF6uHjHyQYuRhDIjegEYNu8c3T6Ttj+qkDxss5wRoPp2kChWTrZFQlXmVYwk/PJ # YczQCMxr7GJCkawCwO+k8IkRj3cCAwEAAaOCAzUwggMxMA4GA1UdDwEB/wQEAwIH # gDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMIIBvwYDVR0g # BIIBtjCCAbIwggGhBglghkgBhv1sBwEwggGSMCgGCCsGAQUFBwIBFhxodHRwczov # L3d3dy5kaWdpY2VydC5jb20vQ1BTMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4A # eQAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQA # ZQAgAGMAbwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUA # IABvAGYAIAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAA # YQBuAGQAIAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcA # cgBlAGUAbQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIA # aQBsAGkAdAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQA # ZQBkACAAaABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsG # CWCGSAGG/WwDFTAfBgNVHSMEGDAWgBQVABIrE5iymQftHt+ivlcNK2cCzTAdBgNV # HQ4EFgQUYVpNJLZJMp1KKnkag0v0HonByn0wfQYDVR0fBHYwdDA4oDagNIYyaHR0 # cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcmww # OKA2oDSGMmh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ # RENBLTEuY3JsMHcGCCsGAQUFBwEBBGswaTAkBggrBgEFBQcwAYYYaHR0cDovL29j # c3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAChjVodHRwOi8vY2FjZXJ0cy5kaWdp # Y2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURDQS0xLmNydDANBgkqhkiG9w0BAQUF # AAOCAQEAnSV+GzNNsiaBXJuGziMgD4CH5Yj//7HUaiwx7ToXGXEXzakbvFoWOQCd # 42yE5FpA+94GAYw3+puxnSR+/iCkV61bt5qwYCbqaVchXTQvH3Gwg5QZBWs1kBCg # e5fH9j/n4hFBpr1i2fAnPTgdKG86Ugnw7HBi02JLsOBzppLA044x2C/jbRcTBu7k # A7YUq/OPQ6dxnSHdFMoVXZJB2vkPgdGZdA0mxA5/G7X1oPHGdwYoFenYk+VVFvC7 # Cqsc21xIJ2bIo4sKHOWV2q7ELlmgYd3a822iYemKC23sEhi991VUQAOSK2vCUcIK # SK+w1G7g9BQKOhvjjz3Kr2qNe9zYRDCCBs0wggW1oAMCAQICEAb9+QOWA63qAArr # Pye7uhswDQYJKoZIhvcNAQEFBQAwZTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERp # Z2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEkMCIGA1UEAxMb # RGlnaUNlcnQgQXNzdXJlZCBJRCBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTIx # MTExMDAwMDAwMFowYjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IElu # YzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEhMB8GA1UEAxMYRGlnaUNlcnQg # QXNzdXJlZCBJRCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA # 6IItmfnKwkKVpYBzQHDSnlZUXKnE0kEGj8kz/E1FkVyBn+0snPgWWd+etSQVwpi5 # tHdJ3InECtqvy15r7a2wcTHrzzpADEZNk+yLejYIA6sMNP4YSYL+x8cxSIB8HqIP # kg5QycaH6zY/2DDD/6b3+6LNb3Mj/qxWBZDwMiEWicZwiPkFl32jx0PdAug7Pe2x # QaPtP77blUjE7h6z8rwMK5nQxl0SQoHhg26Ccz8mSxSQrllmCsSNvtLOBq6thG9I # hJtPQLnxTPKvmPv2zkBdXPao8S+v7Iki8msYZbHBc63X8djPHgp0XEK4aH631XcK # J1Z8D2KkPzIUYJX9BwSiCQIDAQABo4IDejCCA3YwDgYDVR0PAQH/BAQDAgGGMDsG # A1UdJQQ0MDIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwME # BggrBgEFBQcDCDCCAdIGA1UdIASCAckwggHFMIIBtAYKYIZIAYb9bAABBDCCAaQw # OgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cuZGlnaWNlcnQuY29tL3NzbC1jcHMtcmVw # b3NpdG9yeS5odG0wggFkBggrBgEFBQcCAjCCAVYeggFSAEEAbgB5ACAAdQBzAGUA # IABvAGYAIAB0AGgAaQBzACAAQwBlAHIAdABpAGYAaQBjAGEAdABlACAAYwBvAG4A # cwB0AGkAdAB1AHQAZQBzACAAYQBjAGMAZQBwAHQAYQBuAGMAZQAgAG8AZgAgAHQA # aABlACAARABpAGcAaQBDAGUAcgB0ACAAQwBQAC8AQwBQAFMAIABhAG4AZAAgAHQA # aABlACAAUgBlAGwAeQBpAG4AZwAgAFAAYQByAHQAeQAgAEEAZwByAGUAZQBtAGUA # bgB0ACAAdwBoAGkAYwBoACAAbABpAG0AaQB0ACAAbABpAGEAYgBpAGwAaQB0AHkA # IABhAG4AZAAgAGEAcgBlACAAaQBuAGMAbwByAHAAbwByAGEAdABlAGQAIABoAGUA # cgBlAGkAbgAgAGIAeQAgAHIAZQBmAGUAcgBlAG4AYwBlAC4wCwYJYIZIAYb9bAMV # MBIGA1UdEwEB/wQIMAYBAf8CAQAweQYIKwYBBQUHAQEEbTBrMCQGCCsGAQUFBzAB # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUHMAKGN2h0dHA6Ly9j # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcnQw # gYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdp # Q2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2lj # ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwHQYDVR0OBBYEFBUA # EisTmLKZB+0e36K+Vw0rZwLNMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3z # bcgPMA0GCSqGSIb3DQEBBQUAA4IBAQBGUD7Jtygkpzgdtlspr1LPUukxR6tWXHvV # DQtBs+/sdR90OPKyXGGinJXDUOSCuSPRujqGcq04eKx1XRcXNHJHhZRW0eu7NoR3 # zCSl8wQZVann4+erYs37iy2QwsDStZS9Xk+xBdIOPRqpFFumhjFiqKgz5Js5p8T1 # zh14dpQlc+Qqq8+cdkvtX8JLFuRLcEwAiR78xXm8TBJX/l/hHrwCXaj++wc4Tw3G # XZG5D2dFzdaD7eeSDY2xaYxP+1ngIw/Sqq4AfO6cQg7PkdcntxbuD8O9fAqg7iwI # VYUiuOsYGk38KiGtSTGDR5V3cdyxG0tLHBCcdxTBnU8vWpUIKRAmMYIEOzCCBDcC # AQEwgYYwcjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcG # A1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQgU0hBMiBB # c3N1cmVkIElEIENvZGUgU2lnbmluZyBDQQIQAsF1KHTVwoQxhSrYoGRpyjAJBgUr # DgMCGgUAoHgwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkqhkiG9w0BCQMx # DAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkq # hkiG9w0BCQQxFgQUTrokY4o7fc6UmtUZoKsErvluXSUwDQYJKoZIhvcNAQEBBQAE # ggEAI+jDaS2mWU/iUgQF1P6IZ/J1TWV8ipdbnakci3Btg5MLyOGb5Yr4mrcYttXZ # DlmNdR1Ofn+YvrimovIGJ4HPsqlAc7RKyUUT3NDSdRIIjF8iMZuIasUF4mA/bXL1 # GYz8wkGvq0y1qmAEZOxFpnDhwwodG13Embkz0/exdKRoXAyult6ypJoUW8uZa+C/ # qy/nvSI5XzHGV1adw5qXhDsOrHdIPvhLGeF1DlM4fipphyKBT42WPGIpPYMF20u6 # gjgHaFo98EbncDemxAxJS3uD4az/y30JKgt17aVAZ81Hb1cl0QQ8j4Lcej8h5c27 # KJe7bNh1/tR4C6IB9Bf9jHTTkqGCAg8wggILBgkqhkiG9w0BCQYxggH8MIIB+AIB # ATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNV # BAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0IEFzc3VyZWQg # SUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJBgUrDgMCGgUAoF0wGAYJKoZIhvcN # AQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTkwMzE2MTQ0NTM0WjAj # BgkqhkiG9w0BCQQxFgQU0dUNBsDeEGyAY2tY50hGO+DakI8wDQYJKoZIhvcNAQEB # BQAEggEAV2Ucwr8uGmhHVi8Sy1XjnNrJeUVXoC+W7N4ro9mnbaSJvFp60U6Da3qm # YsXSHVca7pf7qbQX3oXvgk92UEUQzkPf1VjzMw7s8+QVprL9eDKb8LE3MjxZ5eJG # J4UdPZZigRrVIoxHpeRv8p2+Vsv+UZ11fciC8PcK/LCC4eoiDCBNrJ38MTlVXjFz # rKTxJlpCCVO07eGVGlAepcxmJ1mR+ZCIKhvJI7NxXvRwR0FhSGtnf0dbPSAJoH4f # B5VH4LiswYmlxdt0JW+r3Lwb0vTdt9pFnU9HMvc+bQ94h7f864MDWOQSYq6ZBSj9 # hX/q9vqAL9bsRwZMgq3oPT35JUEThA== # SIG # End signature block |