Powershell脚本作为sql作业给定错误中的一个步骤

Powershell脚本作为sql作业给定错误中的一个步骤,sql,powershell,sql-server-2012,sql-job,Sql,Powershell,Sql Server 2012,Sql Job,我正在尝试创建一个sql作业,将用户从csv文件同步到广告组。 我的powershell脚本是此作业的步骤之一。问题是,我的脚本应该运行在另一台具有Active Directory的服务器上,但当我运行此步骤时,我不断出错 我的脚本如下: invoke-Command -Session Server-Name Import-Module activedirectory $ADUsers = Import-csv \\Server-Name\folder\file.csv foreach ($Us

我正在尝试创建一个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"

  }
}
我得到的错误是

以用户身份执行:用户名。作业步骤在PowerShell脚本的第2行收到错误。对应的行是“调用命令-会话服务器名称”。更正脚本并重新安排作业。PowerShell返回的错误信息为:“无法绑定参数”“会话”。无法将“System.String”类型的“Server Name”值转换为“System.Management.Automation.Runspaces.PSSession”类型。进程退出代码-1。步骤失败了

服务器名之间有“-”,因此需要知道这是否是导致问题的原因 或者我使用了错误的方法在sql作业的不同服务器上运行此脚本


任何帮助都将不胜感激

Jaspreet我不是powershell的专家,但似乎您传递了错误的参数。仅参考Microsoft文档似乎需要传递计算机名,而不是-Session 在开始时尝试使用这行代码 调用命令-ComputerName服务器名称。 有关更多信息,请参阅Microsoft文档
Jaspreet我不是powershell的专家,但似乎您传递了错误的参数。仅参考Microsoft文档似乎需要传递计算机名,而不是-Session 在开始时尝试使用这行代码 调用命令-ComputerName服务器名称。 有关更多信息,请参阅Microsoft文档

Sql广告同步作业似乎是个奇怪的想法。这是为什么?在这之前的一步创建了一个csv文件的导出,其中包含来自数据库的电子邮件和组。我希望整个过程自动化。这就是我创建此同步的原因。您检查了吗?错误消息为您提供了错误的线索:您正试图在需要会话对象的位置传递服务器名称。首先创建会话(使用
新建PSSession
),或者使用
-ComputerName
参数而不是
-session
参数。此外,您还需要将要在远程服务器上运行的代码包装在脚本块中:
{…}
作为
调用命令的一部分。@boxdog感谢您的帮助。@boxdog。。。。你的评论帮助了我,当事情变得扭曲时,在一个函数中运行它,在找到这个评论并阅读它之后,叮,叮,叮,这也为我修复了它。。。杜奥。。。。会话名称,而不是服务器名称。。。。哇!如果你把这个写下来作为一个答案,给我贴上标签,这样我就可以投票了,我想OP会接受的,因为他的评论说它也解决了这个问题。这是为什么?在这之前的一步创建了一个csv文件的导出,其中包含来自数据库的电子邮件和组。我希望整个过程自动化。这就是我创建此同步的原因。您检查了吗?错误消息为您提供了错误的线索:您正试图在需要会话对象的位置传递服务器名称。首先创建会话(使用
新建PSSession
),或者使用
-ComputerName
参数而不是
-session
参数。此外,您还需要将要在远程服务器上运行的代码包装在脚本块中:
{…}
作为
调用命令的一部分。@boxdog感谢您的帮助。@boxdog。。。。你的评论帮助了我,当事情变得扭曲时,在一个函数中运行它,在找到这个评论并阅读它之后,叮,叮,叮,这也为我修复了它。。。杜奥。。。。会话名称,而不是服务器名称。。。。哇!如果你把这个写下来作为一个答案,我会给我贴上标签,这样我就可以投票了,我想OP会接受的,因为他的评论说它也解决了这个问题。