2

我有一个脚本要求 aUsernameDateRemove (MM/DD/YYYY). 此输入将导出到具有函数的config.CSV文件,格式为.-AppendCSVUsername,DateAdd,DateRemove

我想创建第二个 PS 文件作为每日计划任务运行。这是我迷路的地方,希望得到帮助......

我想引用它config.CSV并将它DateRemove与当前日期进行比较,如果有匹配我想要Username执行“ Remove-ADGroupMember -Identity GroupName -Members $User”,如果没有匹配我希望它什么都不做。

尝试使用单个 PS 脚本创建“删除”作业,但这失败并在我的计划任务中使用变量作为参数。更不用说它会创建 100 多个任务调度程序作业。这使我找到了一个用于用户输入的 PS 文件和一个用于引用“源”文件的计划作业的文件。

$User = Read-Host -Prompt 'Enter the username you want to add to group'
if ($User) {
    Write-Host "$User will be added to the group"
} else {
    Write-Warning -Message "We need a username to run this script"
}
Add-ADGroupMember -Identity Group -Members $User

$Date = Read-Host -Prompt 'Enter removal date'
if ($Date) { 
    Write-Host "$User will be removed from group on $Date"
} else {
    Write-Warning -Message "We need a date to run this script"
}
[PSCustomObject]@{
    Username = $User
    DateAdd  = Get-Date -Format g
    DateRemove = $Date
} | Export-Csv -Path C:\config.csv -Append -NoTypeInformation -Encoding ASCII

$Date = Get-Date
$Config = Import-Csv C:\config.csv
Foreach($DateRemove in $Config) {
$DateRemove = $DateRemove.Date
if "$DateRemove" -eq $Date 

现在我只是困惑..

4

1 回答 1

2

我假设您正在寻找类似以下内容:

$today = [datetime]::Today
Import-Csv C:\config.csv | ForEach-Object {
  if ([datetime] $_.DateRemove -eq $today) {
    Remove-ADGroupMember -Identity $group -Members $_.Username 
  }
}

请注意,组信息不是您在问题中创建的 CSV 的一部分,因此我假设它存储在$group此处的变量中。

[datetime]::Today在午夜(一天的开始)返回今天的日期,即,没有时间组件谢谢LotPings并且,鉴于从 CSV 文件 ( ) 中读取的日期[datetime] $_.DateRemove也没有,因此-eq比较会按预期进行。

通常,避免比较时间戳 ( ) 的字符串"$DateRemove"表示形式,因为格式不同且缺乏精度。

于 2019-08-26T22:05:20.733 回答