我正在尝试完成Powershell脚本以自动终止帐户。我想先捕获一些用户信息并将其写入csv,然后再禁用该帐户并删除所有组。我可以轻松地在各个部分中运行脚本,但是当我创建循环时,它仅对我的文本文件中的一个帐户有效。我不熟悉使用对象,但被告知我应该学习和利用它们。
我已经尝试运行代码而没有获得期望的结果。下面的代码仅包含捕获部分,因为我需要弄清楚如何也包括其余部分。
$user_name = Get-Content -Path 'C:\Users\username\Documents\AD Test Files\*.txt'
foreach ($user in $user_name){
$users = Get-ADUser $user -Properties samaccountname,givenname,surname
$groups = Get-ADPrincipalGroupMembership $users | Select -Expand Name
$data = [PSCustomObject]@{
samaccountname = $users.samaccountname;
givenname = $users.givenname;
surname = $users.surname;
memberOf = ($groups | Out-String).Trim()
}
}
$data | Export-Csv C:\Users\username\Desktop\Term.csv -Delimiter "," -NoTypeInformation -Encoding UTF8
答案 0 :(得分:0)
现在,您在循环的每个迭代中都覆盖$data
,这可以解释为什么它只输出一个帐户。相反,您可以将其制成数组并在每次迭代中添加到数组中(请注意循环中的+=
)
...
$data = @()
foreach ($user in $user_name){
...
$data += [PSCustomObject]@{
...
}
}
$data | Export-Csv ...
答案 1 :(得分:0)
如果您要从foreach中获取数据,这是一个非常简单的解决方案。
$all = foreach{}
$all | Export-Csv C:\Users\username\Desktop\Term.csv -Delimiter "," -NoTypeInformation -Encoding UTF8