我试图在字段中添加一些信息' info'从标签'电话'在我的广告中使用Powershell。
以下是我编写脚本的方式:
ipmo ActiveDirectory
Set-ADUser SAMACCOUNTNAME -Replace @{info="$($_.info) noAGD"}
事情是,它不会起作用。 但是我发现Google下面的脚本完美无缺:
ipmo ActiveDirectory
Import-Csv C:\Users\MyID\Desktop\test.txt | foreach {
Get-ADUser $_.sAMAccountname -Properties info} | foreach {
Set-ADUser $_ -Replace @{info="$($_.info) noAGD"
}
}
为什么?......你们中的任何人都可以澄清一下吗?
谢谢,;)
答案 0 :(得分:0)
您是否发布了完整的脚本?实际上,您没有为SAMACCOUNTNAME提供值。您找到的脚本从CSV将对象导入pipleline并将其管道化为两个foreach循环(这是不必要的)。写下你发现的东西的更好方法是:
Import-Csv C:\Users\MyID\Desktop\test.txt | foreach {Get-ADUser $_.sAMAccountname -Properties info | Set-ADUser $_.SamAccountName -Replace @{info="$($_.info) noAGD"}}
追加是一个完全不同的问题,真的需要变量。见下文:
$UsersInfo = Import-Csv C:\Users\MyID\Desktop\test.txt
foreach ($Userinfo in $UsersInfo) {
$info = Get-ADUser $UserInfo.SamAccountName -Properties Info | Select -ExpandProperty Info
$info += $Userinfo.info
Set-ADUser $UserInfo.SamAccountName -Replace @{info="$info noAGD"}
}
如果不了解更多,那应该会让你非常接近。
答案 1 :(得分:0)
我发布了另一个答案,因为虽然我可以使用,但我想更多地解释一下你找到的脚本及其工作原理,而你的脚本没有,我认为是你原来的问题。
因此,在您找到的脚本中,您将看到它从CSV文件中获取信息,然后将管道(" |"字符)传递给Get-ADUser cmdlet(以及随后Set-ADUser cmdlet)。我被绊倒的原因是为什么它使用了两个foreach循环。但经过进一步调查,我发现了原因。
当我跑得很简单时:
Get-ADUser SAMACCOUNTNAME -Properties info | Set-ADUser -Replace @{info="$($_.info) noAGD"}"
它确实消除了" info"写" noAGD&#34 ;.但是,当我运行相同的东西,但把我的" Set-ADUser"在foreach循环中,这次包括-Identity参数
Get-ADUser SAMACCOUNTNAME -Properties info | foreach { Set-ADUser $_.SamAccountName -Replace @{info="$($_.info) noAGD"}" }
它会附加" noAGD"在那里。管道变量和foreach循环似乎有一种特殊的关系。我知道我遇到了其他尝试使用管道变量的实例,并发现我必须使用foreach循环才能使其工作。
因此,在您的脚本中,您不能管理任何事情,这就是为什么您无法使用" $($ .info ..." The管道变量尚未建立且" $ "为空且没有foreach循环。当您运行脚本时,用户对象应该具有" [空格] noAGD"在其中。
答案 2 :(得分:0)
好的,我明白了!非常感谢您的调查。你做得很好,我真的很感激。
说到' foreach'环。我在寻找问题的解决方案时遇到了以下脚本(在Technet上):
Import-Module ActiveDirectory
foreach($j in Get-Content c:\userdata.txt)
{
$i = Get-ADUser $j -Properties info | %{ $_.info}
Set-ADUser $j -Replace @{info="$($i) `r`n Account Disabled for O365 Cleanup"}
}
如果需要,这是链接:
https://gallery.technet.microsoft.com/scriptcenter/Powershell-Append-Info-5f613638
正如你所看到的那个人通过foreach循环结束变量$ i,在测试它之后,将值作为普通信息返回(没有标题和东西......)。 我以前从未见过。
现在我想知道foreach循环的这种用法。你能告诉我更多关于它的事吗?
事实上,我实在是有点被抛弃了。