Назад | Перейти на главную страницу

Сценарий Powershell для вставки оператора SQL с ошибкой апострофа

У меня есть следующая часть скрипта, которая принимает объекты из Exchange и AD и вставляет их в таблицу MYSQL. Но некоторые переменные Full Names имеют «как» PA группы рассылки.

Вот часть сценария:

    # Get Distributions List ready for writing and write MySQL
           write-host " "
           write-host "Writing Distribution List"
           write-host " "
           # Get Room Mailboxes
           $strdist = Get-DistributionGroup
           foreach ($strdist.Name in $strdist) 
           {

                $strDistName = $strDist.Name
                $strDistSamAccountName = $strDist.SamAccountName
                $strDistHidden = $strDist.HiddenFromAddressListsEnabled

               #write-host "Distribution List Name: "                $strDistName
               #write-host "Distribution List Account Name: "        $strDistSamAccountName
               #write-host "Distribution List Hidden from GAL: "     $strDistHiddenFromAddressListsEnabled




      # Check to See if full_name Name exists
               $sqlDistLookup = "SELECT account_name FROM distribution WHERE account_name='$strDistSamAccountName'"
               $DistLookup = Execute-MySQLQuery $con $sqlDistLookup 


               # Write to MySQL resource
               If ($DistLookup) {
               $sqlDistUpdateRecord = "UPDATE distribution SET full_name='$strDistName', account_name='$strDistSamAccountName', hide_from_gal='$strDistHidden' WHERE account_name='$strDistSamAccountName'"
               $DIstUpdateRecord = Execute-MySQLQuery $con $sqlDistUpdateRecord
               Write-host $strDistName " DB:distribution - Updated"
               } 
               else
               {
               $sqlDistNewRecord = "INSERT INTO distribution (full_name,account_name,hide_from_gal) VALUES ('$strDistName','$strDistSamAccountName','$strDistHidden')"
               $DistNewRecord = Execute-MySQLQuery $con $sqlDistNewRecord
               Write-host $strDistName " DB:distribution - NEW"
              }
           }

и ошибка из консоли:

Исключение, вызывающее "Заполнить" аргументом (ами) "2": "У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, чтобы найти правильный синтаксис рядом с 's', account_name = ' ! PAs.wingrave ', hide_from_gal =' False 'WHERE account_name ='! PAs 'в строке 1 "В C: \ Support \ Control Panel \ Test4_distribution.ps1: 63 символа: 22 + $ dataAdapter.Fill <<<< ($ dataSet, "данные") | Out-Null # Заполнить набор данных из адаптера данных с именем "data" + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: DotNetMethodException

! PA's DB: распространение - Обновлено

Любая помощь была бы большой, спасибо .... ошибка возникает из этой переменной: $ strDistName = $ strDist.Name, но мне нужно выполнить эту проверку для всех переменных ....

Спасибо

Вы можете попробовать что-то вроде этого:

$sqlDistUpdateRecord = "UPDATE distribution SET full_name='{0}', account_name='{1}', hide_from_gal='{2}' WHERE account_name='{1}'" -f $strDistName, $strDistSamAccountName, $strDistHidden