我需要搜索AD中的所有用户,找到他们的属性“mail”,并在此属性中将@ hell.com替换为@ heaven.com
我坚持导出并导入到csv ...
Import-Module ActiveDirectory
get-aduser -Filter {samaccountname -like "gmaleev"} -properties * | Select-Object SamAccountName,mail | export-csv -NoTypeInformation d:\1.csv
$impfile = "d:\1.csv"
Import-CSV $impFile
foreach ($user in $users)
{
$sam = $user.samaccountname
$email = $user.mail
write-host "User $sam has mail $mail"
}
它不起作用,为什么?
答案 0 :(得分:0)
当前问题是您正在运行cmdlet以导入数据但不保存数据。您的ForEach
cmdlet没有处理任何数据,因此您应该有空白输出,但Import-CSV
除了应该输出到控制台的输出。
导出数据以再次导入数据似乎也是多余的。我会假设您有出口的原因。
Import-Module ActiveDirectory
$impfile = "d:\1.csv"
$results = Get-AdUser -Filter {samaccountname -like "gmaleev"} -properties * | Select-Object SamAccountName,mail
$results | export-csv -NoTypeInformation d:\1.csv
$results | foreach ($user in $users){
$sam = $user.samaccountname
$email = $user.mail
write-host "User $sam has mail $mail"
}
这应该解决你所展示的内容。它将获得相同的数据并将其保存到变量$results
。导出该数据,然后将其传送到ForEach
进行处理
您的标题表明您想要更改用户属性。为此,您需要使用Set-Aduser
。根据您的环境,这可能不是操纵电子邮件属性的最佳方式。