【问题标题】:Execute and set parameters on a PowerShell script file在 PowerShell 脚本文件上执行和设置参数
【发布时间】:2019-01-09 22:42:20
【问题描述】:

我正在尝试运行一个发送一个参数的 ps1 文件。此脚本用于解锁 AD 上的帐户。

我的 ps1 文件是:

Param([string]$user="")
Get-ADUser -Properties * -Filter {mail -like "$user"} |
    Unlock-ADAccount |
    Sync-ADObject -Destination "AZUDCMO01"

我使用以下方法调用它:

PS C:\Users\fornecedor.bmc01> .\bmc_unlock_ad.ps1 "andreza.perez@grupomoura.com"

没有返回错误,但帐户仍然被锁定。

有人试过用这种方法解锁帐户吗?

【问题讨论】:

  • Get-ADUser -Filter {mail -like "$user"} 真的返回结果吗?因为没有通配符,表达式mail -like "$user" 的作用与mail -eq "$user" 相同。

标签: powershell powershell-remoting remedy


【解决方案1】:

为此,您根本不想使用-Properties * 参数。您所需要的只是获得一个具有足够属性的 ADUser 对象,以便能够通过管道发送它。 Get-ADUser 为此返回了足够多的属性。

话虽如此,您正在从Unlock-ADAccount cmdlet 到Sync-ADObject cmdlet,但是...
根据the docsUnlock-ADAccount cmdlet 默认不返回任何内容。对于该部分,您需要添加参数-PassThru

试试这个:

Param([string]$user="")

Get-ADUser -Filter {mail -like "$user"} |
    Unlock-ADAccount -PassThru |
    Sync-ADObject -Destination "AZUDCMO01"

【讨论】:

  • 您好,谢谢!我从 cmd 调用 ps1 文件进行了第一次测试。不工作。当我从 PS Console 运行命令时,它可以工作。该命令可以,但是从DOS启动时不运行。
  • @Barcat 这取决于您如何从命令框运行 powershell 脚本。如果您尝试使用问题中的语法,那么它确实行不通。使用PS C:\Users\fornecedor.bmc01> powershell.exe -File "PATH_TO_THE_SCRIPT" "andreza.perez@grupomoura.com"。我不知道你为什么不简单地从 PowerShell 中运行它..
  • 我想从 powershell 运行,但它是一个在第三方应用程序上启动的进程。这个应用程序可以运行命令将参数发送到文件,所以我使用 ps1 文件和命令行来调用它并传递用户名
  • @Barcat 好吧。您应该可以使用我在评论中使用的语法来做到这一点。
猜你喜欢
  • 1970-01-01
  • 2014-09-30
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多