我正在尝试建立一个工作流,该工作流将基于所选服务器的管理员帐户添加到安全组,并为用户名(每行一个用户名)提供一个多行文本框。
这两个都被捕获并传递给我的PowerShell自定义活动,我将每个变量的内容分割成这样:
$ServerNames = "${current.variables.server_target_servers.getDisplayValue()}"
$ServerNames = $ServerNames.Split(', ',[System.StringSplitOptions]::RemoveEmptyEntries)
$UserNames = "${current.variables.server_admin_accounts}"
$UserNames = $UserNames.Split("`n",[System.StringSplitOptions]::RemoveEmptyEntries)
服务器工作正常,我可以毫无问题地遍历它们。
如果我添加一个用户,则可以将其添加到所有服务器,但是如果我在“多行文本”框中添加多个用户,突然找不到该用户。
我尝试过这两行(在ForEach循环中,因此$ UserName而不是$ UserNames:
$ADUserObj = Get-ADUser -Filter "samaccountname -eq '$UserName'"
$ADUserObj = Get-ADUser -Filter {SamAccountName -like "$UserName"}
要检查我的$ UserNames变量中是否确实有用户名,我尝试了以下这一行:
ForEach ($UserName in $UserNames) {Send-MailMessage -from "AdminScript@domain.com -to "me@domain.com" -subject "Username" -body "$UserName" -SmtpServer "smtp.domain.com"}
和预期的一样,我在单独的电子邮件中收到了每个用户的电子邮件。但仍然出现错误“找不到用户”。
有什么主意吗? (我也已将其发布到ServiceNow Dev社区,但在这里似乎也很重要)