【问题标题】:How to Automate Enable/Disable user in AD via PowerShell from CSV with date parameter如何使用日期参数通过 CSV 中的 PowerShell 自动启用/禁用 AD 中的用户
【发布时间】:2021-09-08 15:13:02
【问题描述】:

我开始在 PS 中学习脚本,我想从具有特定日期的 csv 文件自动启用/禁用 AD 中的用户,但我需要一点帮助。我有第一个关于启用的问题,如何设置必须启用用户的日期?需要我创建这个属性,或者我可以在脚本中的某处写它吗?

【问题讨论】:

  • AD 中没有机制可以在特定日期之后启用帐户 - 您必须创建计划任务以在该日期运行 Enabled-ADAccountSet-ADUser什么时候应该启用它们

标签: powershell date active-directory disable script


【解决方案1】:

您需要在任务计划程序中创建一个基本任务,并以每日触发和启动程序作为操作,并指定您的 PowerShell 脚本。

在特定日期启用用户的 powershell 脚本是: 如果您想在同一日期启用 CSV 文件中的所有用户,请使用以下脚本:

Import-Module ActiveDirectory
$a = [DateTime] "9/9/2021"
$b = (Get-Date).ToString('M/d/y')
if ( $a -eq $b) {
    Import-Csv "path-to-csv-file" | ForEach-Object {
        $samAccountName = $_."samAccountName"
        Get-ADUser -Identity $samAccountName | Enable-ADAccount
        Write-Host "-User "$samAccountName" Enabled"
    }
} 

如果在 CSV 文件中指定了每个用户的启用日期,请使用以下脚本:

Import-Module ActiveDirectory
$b = (Get-Date).ToString('M/d/y')
Import-Csv "path-to-csv-file" | ForEach-Object {
    $samAccountName = $_."samAccountName"     
    $date = $_."date"
    if ( $date -eq $b) {
        Get-ADUser -Identity $samAccountName | Enable-ADAccount
        Write-Host "-User "$samAccountName" Enabled"
    }
}

类似的方式,你可以为残疾用户实现。

这些脚本将由任务调度程序每天运行。如果脚本中提供的日期与脚本运行的日期相同,则用户帐户将被启用/禁用。

参考

https://active-directory-wp.com/docs/Usage/How_to_add_a_cron_job_on_Windows/Scheduled_tasks_and_cron_jobs_on_Windows/

【讨论】:

  • 非常感谢,我今天早上在想这样的事情:D,当我想从 csv 禁用用户时,我可以在一个脚本中做同样的事情吗?一个包含名字和姓氏、SamAccountName、DateDisable、DateEnabled 的 CSV 文件以及一个用于此的脚本?还是我需要做点别的?感谢您提供线索,我尝试编写一些代码,我希望将来添加一些带有日志和报告的功能:D 但首先我需要基本脚本
  • PS:如何通过powershell从团队导入csv文件?
  • 您可以使用单个脚本来启用和禁用用户。您可以添加 TodayDate = DateDisabled 的逻辑,禁用用户和 TodayDate = dateEnabled,启用用户
  • 从团队中导入 csv 类似于:techcommunity.microsoft.com/t5/microsoft-teams/…
  • 我使用这个脚本,但我不知道如何从 csv 导入日期(如何格式化日期)?我在 CSV 文件 9/28/2021 (M,d,y) 中使用这种格式我需要如何将它导入到 powershell 感谢一些线索
【解决方案2】:

我有类似的东西。

Get-Date #download date from the system

$b = (Get-Date).ToString('M"/"d"/"yyyy') #convert the date from the system to my csv format which is 9/9/2021

Write-Host $b #check date format

Import-Csv "C:\it\blokady\Accounts Deactivation Test.csv" | ForEach-Object {

$SamAccountName = $_."SamAccountName"     

$dateDisable = $_."dateDisable"


 Write-Host $dateDisable

if ( $dateDisable -eq $b) {
    
    Get-ADUser -Identity $SamAccountName | Disable-ADAccount
    
    Write-Host "-User "$SamAccountName" Disabled"
}

$dateEnable = $_."dateEnable"
 
 if ( $dateEnable -eq $b) {
    
    Get-ADUser -Identity $SamAccountName | Enable-ADAccount
    
    Write-Host "-User "$SamAccountName" Enable"
}

}

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多