Есть PowerShell скрипт, который делает запрос в 2 базы, далее сравнивает их, если значения равны то выводит слово match, а если нет тогда mismatch.
Данный скрипт вызывается через UserParametr в настройках zabbix agent'a.
1) Проблема в том что иногда прилетает непонятно откуда символ 'W'
2) Так же иногда прилетает ошибка как-будто не такого командлета.
Вот сам скрипт
Цель сравнение данных боевой и репликационной баз.

Данный скрипт вызывается через UserParametr в настройках zabbix agent'a.
1) Проблема в том что иногда прилетает непонятно откуда символ 'W'
2) Так же иногда прилетает ошибка как-будто не такого командлета.
Вот сам скрипт
$dateRow=Invoke-Sqlcmd -Query "SELECT DATEADD(mi,-60,GETDATE()),DATEADD(mi,-5,GETDATE())" -ServerInstance "x.x.x.x" -Database "DB1" -Username "zabbix" -Password "pass"
$dt1=$dateRow[0].tostring("yyyyMMdd hh:mm:ss")
$dt2=$dateRow[1].tostring("yyyyMMdd hh:mm:ss")
$sqlQuery="SELECT count(*) from zakazy where date_reg >= '$dt1' and date_reg <= '$dt2'"
$var1=Invoke-Sqlcmd -Query $sqlQuery -ServerInstance "x.x.x.x" -Database "DB1" -Username "zabbix" -Password "pass"
$var2=Invoke-Sqlcmd -Query $sqlQuery -ServerInstance "y.y.y.y" -Database "DB2" -Username "zabbix" -Password "pass"
if($var1[0] -eq $var2[0]){
Write-Host "match"
}
else {
Write-Host "mismatch"
}
$dt1=$dateRow[0].tostring("yyyyMMdd hh:mm:ss")
$dt2=$dateRow[1].tostring("yyyyMMdd hh:mm:ss")
$sqlQuery="SELECT count(*) from zakazy where date_reg >= '$dt1' and date_reg <= '$dt2'"
$var1=Invoke-Sqlcmd -Query $sqlQuery -ServerInstance "x.x.x.x" -Database "DB1" -Username "zabbix" -Password "pass"
$var2=Invoke-Sqlcmd -Query $sqlQuery -ServerInstance "y.y.y.y" -Database "DB2" -Username "zabbix" -Password "pass"
if($var1[0] -eq $var2[0]){
Write-Host "match"
}
else {
Write-Host "mismatch"
}
Comment