Files
DBAdmin/scripts/MSSQL/PowerShell/MasterDatabase/getInstance.ps1
T
2026-05-18 06:40:19 +00:00

89 lines
3.8 KiB
PowerShell

$envCountry = 'CH'
#import Country settings
. .\..\.env\Import-EnvironmentSettings.ps1 -envCountry $envCountry
# This is minimal dane witch can be inserted to database
$minDatedte = Get-Date "1777/01/01"
$svcPassword = ConvertTo-SecureString -String $ADPassword -AsPlainText -Force
$ADCredential = New-Object System.Management.Automation.PSCredential("$ActiveDirectoryDomain\$ADAccount", $svcPassword)
Write-host 'Processing country ... ' $country
foreach($server in $servers){
$serverName = $server[0]
$serverEnv = $server[3]
$instanceIp = $server[1]
# jeśli jest na jednym IP wiele instancji należy zbudować odpowiedni connection string i dopiero potem można się podłączyć do bazy
if($server[4]) {
$instance = $server[1] + '\' + $server[4]
} else {
$instance = $server[1]
}
$tmpVerInstance = test-DbaBuild -SqlInstance $instance -Latest -SqlCredential $ADCredential -update
$System_name = (Get-WmiObject -comp $instanceIp -Credential $ADCredential -class Win32_OperatingSystem ).caption #Version # #caption
$System_Version = (Get-WmiObject -comp $instanceIp -Credential $ADCredential -class Win32_OperatingSystem ).Version
# $IP_Address = $HostNames[$i]
# $ServerName = 'Server ' + $serverName
$Instance_Name = $tmpVerInstance.SqlInstance
Write-host '=> Processing server ... ' $serverName
$dba_info = Invoke-DbaQuery -SqlInstance $instanceIp -Query "EXEC sp_server_info" -SqlCredential $ADCredential
$Database_Type = $dba_info[0].attribute_value
$Build = $tmpVerInstance.Build
$Server_Name = (Get-WmiObject -comp $instanceIp -Credential $ADCredential -class Win32_OperatingSystem ).CSName
$Build = $tmpVerInstance.Build
$KBLevel = $tmpVerInstance.KBLevel
$Compliant = $tmpVerInstance.Compliant
$SPLevel = $tmpVerInstance.SPLevel
$SupportedUntil = $tmpVerInstance.SupportedUntil
$instanceid = Invoke-DbaQuery -SqlInstance $dbadminServer -Database "DBAdmin" -Query "EXEC dbaInstance '$Instance_Name', '$country', '$System_name', '$System_Version', '$instanceIp', '$Database_Type', '$Build', '$KBLevel', '$Compliant', '$SPLevel', '$SupportedUntil', '$serverEnv', '$serverName'" -SqlCredential $DBACredential
$InsID = $instanceid['InstanceID']
$DatabaseInfo = Get-DbaDatabase -SqlInstance $instance -SqlCredential $ADCredential
foreach($db in $DatabaseInfo){
if ($db.LastFullBackup -lt $minDatedte) {
$LastFullBackup = $null
}
else {
$LastFullBackup = $db.LastFullBackup
}
if ($db.LastDiffBackup -lt $minDatedte ) {
$LastDiffBackup = $null
}
else {
$LastDiffBackup = $db.LastDiffBackup
}
if ($db.LastLogBackup -lt $minDatedte) {
$LastLogBackup = $null
}
else {
$LastLogBackup = $db.LastLogBackup
}
$sqlParams = @{
_instanceID = $InsID
_DatabaseName = $db.Name
_DatabaseStatus = $db.Status
_IsAccessible = $db.IsAccessible
_RecoveryModel = $db.RecoveryModel
_LogReuseWaitStatus = $db.LogReuseWaitStatus
_Compatibility = $db.Compatibility
_Collation = $db.Collation
_DBOwner = $db.Owner
_IsEncrypted = $db.Encrypted
_LastFullBackup = $LastFullBackup
_LastDiffBackup = $LastDiffBackup
_LastLogBackup = $LastLogBackup
}
Write-host '==> Processing database ... ' $db.Name
Invoke-DbaQuery -SqlInstance $dbadminServer -Database "DBAdmin" -Query 'exec dbaDatabase @_instanceID, @_DatabaseName, @_DatabaseStatus, @_IsAccessible, @_RecoveryModel, @_LogReuseWaitStatus, @_Compatibility, @_Collation, @_DBOwner, @_IsEncrypted, @_LastFullBackup, @_LastDiffBackup, @_LastLogBackup ' -SqlParameter $sqlParams -SqlCredential $DBACredential
}
}