如何解决写主机,循环问题,如何获取摘要字符串?
所以我正在努力让我的脚本在运行时向屏幕输出一些信息。我有一些 foreach/if 循环似乎没有正确捕捉。假设我有类似的东西:
$ReportsTo = Get-adgroup -searchbase $ou -filter "Name -like 'Report to *'" |
where {$_.name -replace 'Report to ' -in $name} |
select name,samaccountname
Foreach ($manager in ($managers.SamAccountName)) {
if ($manager -notin (($ReportsTo.Name) -replace 'Report to ')) {
new-adgroup -name "Report to $manager" -groupscope global -path $ou
write-host = "New group for " + $manager + " has been created."
} else {
write-host = "Group for " + $manager + " already exists."
}
在写入时,无论新组是创建还是已经存在,它都会在每次迭代时写入屏幕。无论该组是否实际存在,它都会这样做。假设 -path $ou
中存在一个名为“Report to Sam.Walton”的组并运行脚本。创建。
如果我在 ISE 中进行此调试,则永远无法让 $ReportsTo 打印值。所以也许那条线是错误的。
解决方法
如果 $name
是 SamAccountNames 的数组(只是字符串,而不是对象),那么为什么不像这样清理 $ReportsTo
数组:
$ReportsTo = Get-ADGroup -SearchBase $ou Filter "Name -like 'Report to *'" |
Where-Object {($_.Name -replace 'Report to ') -in $name} |
Select-Object @{Name = 'name'; Expression = {$_.Name -replace 'Report to '}},samaccountname
那么您的测试可以简化为:
if ($manager -notin ($ReportsTo.Name)) {..}
请告诉我们 $name
的具体内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。