Строки PowerShell и SQL, переданные из AD - PullRequest
0 голосов
/ 29 мая 2018

Хорошо, вот интересный.Я постараюсь упростить эту проблему. В Powershell, допустим, я использую следующее:

$users = Get-ADUser | Select samAccountName, givenName, sn

В примере Active Directory 3 пользователя:

First Name    Last Name
__________    _________
Jen           Jones
Jason         O'Neil
Jake          Johnson

У меня есть команда SQL Update вPowerShell для обновления таблицы, которая выглядит следующим образом:

ForEach($U in $Users){

$SQLAddInfo = "
              UPDATE
                  Table1
              SET
                  User_Last_Name = '$($User.sn)',
                  User_First_Name = '$($User.givenName)'  
              WHERE
                  User_ID = '$($User.samAccountName)'"

$SqlConnection.Open()
$SqlCmd.CommandText = $SQLaddInfo
$SqlCmd.Connection = $SqlConnection
$SqlCmd.ExecuteNonQuery()
$SqlConnection.Close()
}

Теперь проблема в том, что это работает большую часть времени, но когда я получаю фамилию О'Нила, SQL думает, что апостроф являетсятерминатор для команды SQL.Как мне использовать переменные здесь и при этом Powershell или SQL игнорируют апостроф?

1 Ответ

0 голосов
/ 29 мая 2018

Параметризованные запросы. Все остальное, и О'Нил далек от вашей единственной проблемы .

.... возвращениеднем позже, потому что я забыл говорить о табличных параметрах .

Если вызов Get-ADUser здесь даст 1000 результатов, вы запустите 1000SQL-запросы, и это не весело.Вы можете добиться большего успеха, отправляя все данные на сервер за один шаг с помощью табличного параметра, где вы делаете INSERT / SELECT, который использует этот параметр для запуска только одного запроса.

...