【问题标题】:Trying to move AD user and disable the account running some PowerShell尝试移动 AD 用户并禁用运行某些 PowerShell 的帐户
【发布时间】:2019-08-16 11:27:20
【问题描述】:

我正在尝试运行一些 PowerShell 以将用户移动到不同的 OU 并禁用该帐户。

这是我的代码

    $ADUsers = Import-Xlsx 'C:\User Creation\ADUsersRemoval.xlsx' | Foreach {
        $test = Get-ADUser -LdapFilter "samaccountname -eq '$("$Firstname.$Lastname")" |
                Move-ADObject -TargetPath "OU=Users,OU=Graveyard,DC=domain,DC=dc" -PassThru |
                Disable-ADAccount
    }
}

代码运行没有错误,但对用户帐户没有任何作用。我做错了什么?

更新

我意识到我错过了添加 $Firstname$Lastname 的值。

这是我测试过的代码。

    $ADUsers = Import-Xlsx 'C:\User Creation\ADUsersRemoval.xlsx'

    foreach ($User in $ADUsers) {
        $Firstname = $User.Firstname
        $Lastname = $User.Lastname

        Get-ADUser -Filter "samaccountname -eq '$("$Firstname.$Lastname")'" -Properties 'mail'
    }
}

现在工作得很好,在下面给我详细信息。清楚地从我的 xlsx 文件 ps 中读取。使用'$("$Firstname.$Lastname")'" 可以正常工作。任何其他方式都不会读取 xlsx 文件。

PSComputerName : 服务器 运行空间 ID:**************************************** DistinguishedName : CN=user65 test65,CN=Users,DC=domain,DC=com 启用:真 给定名称:user65 邮件:user65.test65@domain.com 名称:user65 test65 对象类:用户 对象GUID:afc3fc3b-c43a-4e1b-ad83-804ee605eb00 SamAccountName : user65.test65 SID :****************************************** 姓氏:test65 用户主体名称:user65.test65@domain.com

但是在尝试执行移动用户和禁用的任务时。它没有作用

$ADUsers = Import-Xlsx 'C:\User Creation\ADUsersRemoval.xlsx'

foreach ($User in $ADUsers) {
    $Firstname = $User.Firstname
    $Lastname = $User.Lastname

    Get-ADUser -Filter "samaccountname -eq '$("$Firstname.$Lastname")'" |
        Move-ADObject -TargetPath "OU=Users,OU=Graveyard,DC=domain,DC=com" -PassThru |
        Disable-ADAccount
}

【问题讨论】:

  • 你应该切换到-filter而不是-ldapfilter,因为你已经有了-filter的语法。你也有一个没有结束单引号的单引号。我会尝试Get-ADUser -Filter "samaccountname -eq '$("$Firstname.$Lastname")'"
  • '$("$Firstname.$Lastname")' 应该是'${Firstname}.${Lastname}'。为什么人们觉得有必要将所有内容都放入子表达式中?
  • [1] '$("$Firstname.$Lastname")" 来自哪里?看起来应该是 $_.FirstName 或 CSV 导入中的任何内容。 [2] 除非您将 -PassThru 添加到其参数中,否则 $Test? from what i can tell, Disable-ADAccount` 中的任何内容都没有输出。
  • @Kidbuu 一方面,您发布的代码 sn-p 有一个虚假的尾随花括号。此外,正如其他人指出的那样,$Firstname$Lastname 未定义,您的代码使用参数 -LdapFilter 和参数 -Filter 的值。请创建一个minimal reproducible example,测试运行 that 代码以确保它仍然暴露您尝试调试的问题,然后 edit 您的问题并复制/粘贴 that i> 代码连同示例输入和它引发的所有错误。
  • 另外,你确定用户SamAccountName的形式是FirstName.LastName吗?

标签: powershell active-directory


【解决方案1】:

我已经设法让它工作了。我认为它只是缺少价值观。我敢肯定我试过几次。感谢那些帮助过的人:)

Import-Module activedirectory
Install-module PSExcel

Get-command -module psexcel

#Store the data from ADUsers.csv in the $ADUsers variable
$ADUsers = Import-XLSX 'C:\User Creation\ADUsersRemoval.xlsx'

Foreach ($User in $ADUsers){

$Firstname = $User.Firstname
$Lastname = $User.Lastname

Get-ADUser -filter "samaccountname -eq '$("$Firstname.$Lastname")'"| Move-ADObject -TargetPath "OU=Users,OU=Graveyard,DC=Domain,DC=com" -PassThru | Disable-ADAccount}}

【讨论】:

  • 最后一件事。如果我想清除用户属性,例如描述,我将如何去做|set-ADuser -Description ""
  • 您可以在 Get-ADUser 之后执行此操作。 Get-ADUser .... | Set-ADUser -Description "" -passthru | Move-ADObject ...
  • @AdminOfThings 我已经整理好了。你必须使用Set-ADuser -Clear @('Description')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
  • 2019-07-18
相关资源
最近更新 更多