Сценарий Powershell как шаг в задании sql дает ошибку

Я пытаюсь создать задание sql, которое синхронизирует пользователей из файла CSV с группой объявлений. Мой сценарий PowerShell - один из этапов этой работы. Проблема в том, что мой сценарий должен запускаться на другом сервере с Active Directory, но я продолжаю получать ошибку при выполнении этого шага.

Мой сценарий следующий:

invoke-Command -Session Server-Name
Import-Module activedirectory
$ADUsers = Import-csv \\Server-Name\folder\file.csv
foreach ($User in $ADUsers)
{  
    $Username = $User.sAMAccountName
   $group=$user.adgroup 

if (Get-ADUser -F {SamAccountName -eq $Username})
{
 foreach($group in $groups){Add-ADGroupMember -identity $group -Members $Username}

    Write-Output "$username has beeen added to group $group"

  }
}

Я получаю ошибку

Выполняется как пользователь: Имя пользователя. Шаг задания получил ошибку в строке 2 сценария PowerShell. Соответствующая строка - «Invoke-Command -Session Server-Name». Исправьте сценарий и перенесите задание. PowerShell возвращает следующие сведения об ошибке: «Невозможно привязать параметр сеанса». Невозможно преобразовать значение «Имя сервера» типа «System.String» в тип «System.Management.Automation.Runspaces.PSSession». '. Код выхода из процесса -1. Шаг не удался.

имя сервера имеет '-' между ними, поэтому необходимо знать, является ли это причиной проблемы, или я использую неправильный способ запуска этого скрипта на другом сервере из задания sql

Любая помощь будет оценена по достоинству!


person Jaspreet Saini    schedule 26.04.2018    source источник
comment
Задание Sql для синхронизации AD кажется странной идеей. Почему это?   -  person vonPryz    schedule 26.04.2018
comment
Шаг перед этим создает экспорт CSV-файла, содержащего электронные письма и группы из базы данных. Я хочу автоматизировать весь этот процесс. вот почему я создаю эту синхронизацию   -  person Jaspreet Saini    schedule 26.04.2018
comment
Вы проверили справка по Invoke-Command? Сообщение об ошибке дает понять, что не так: вы пытаетесь передать имя сервера там, где он ожидает объект сеанса. Либо сначала создайте сеанс (с New-PSSession), либо используйте параметр -ComputerName вместо параметра -Session. Кроме того, вам необходимо заключить код, который вы хотите запустить на удаленном сервере, в блок сценария: {...} как часть Invoke-Command.   -  person boxdog    schedule 26.04.2018
comment
@boxdog Большое спасибо, это сработало.   -  person Jaspreet Saini    schedule 26.04.2018
comment
@boxdog .... Ваш комментарий помог мне, когда что-то запуталось в работе с функцией, и после того, как я нашел этот комментарий и прочитал его, ding, ding, ding, это тоже исправило его для меня ... Du'oh .. .. имя сеанса, а не имя сервера .... вау .... Отметьте меня обратно, если вы напишете это как ответ, чтобы я мог проголосовать за него, и я предполагаю, что OP примет, поскольку в его комментарии говорится, что он решил, что проблема тоже.   -  person Bitcoin Murderous Maniac    schedule 04.10.2019


Ответы (1)


Jaspreet Я не эксперт по PowerShell, но похоже, что вы передаете неправильные параметры. Просто ссылка на документы Microsoft кажется, что вам нужно передать имя компьютера, а не -Session Попробуйте с этой строкой кода при запуске invoke-Command -ComputerName Server- Имя. Дополнительные сведения см. В документации Microsoft https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/invoke-command?view=powershell-6#examples

person ErGaurav    schedule 26.04.2018