gpt4 book ai didi

powershell - 这是PowerShell中的错误吗?

转载 作者:行者123 更新时间:2023-12-02 23:14:08 25 4
gpt4 key购买 nike

我注意到PowerShell中有些奇怪的行为。我已经验证了我认为在PowerShell 2和PowerShell 4中都存在错误的行为。这确实是一个错误,还是我做错了什么?

请阅读以下代码段。这个想法是简单地遍历Active Directory组名称的列表(字符串数组),然后告诉我每个组中有多少个成员:

Foreach($ADGroupName In [String[]]'Domain Admins',     `
'Enterprise Admins', `
'Administrators', `
'Account Operators', `
'Backup Operators')
{
$Group = Get-ADGroup -Filter { Name -EQ $ADGroupName } -Properties Members
If ($Group -EQ $Null -OR $Group.PropertyNames -NotContains 'Members')
{
# This only happens on the first iteration of the loop!
Write-Error "$ADGroupName was null or was missing the Members property!"
}
Else
{
Write-Host "$ADGroupName contains $($Group.Members.Count) members."
}
}

在循环的第一次迭代中,由于$ Group为$ null并因此正确地不包含Member,尽管命令和组名均有效且该组具有成员,但出现错误。通过循环的后续迭代工作正常。但这并不影响列表中的第一组。我可以对组进行重新排序,但是它总是在字符串数组的第一个元素上返回错误。

为了解决此问题,我仅将“DummyGroup”作为数组的第一个元素,并优雅地处理了预期的异常,然后列表中的所有其他组都可以正常工作。

有没有更好的方法来处理似乎是错误的东西?

最佳答案

不知道您是否真的将其称为“错误”,但这是由在脚本块过滤器中使用变量引起的。如果更改为使用带有可扩展字符串的字符串过滤器,则变量扩展将按预期工作:

Foreach($ADGroupName In [String[]]'Domain Admins',     `
'Enterprise Admins', `
'Administrators', `
'Account Operators', `
'Backup Operators')
{
$Group = Get-ADGroup -Filter "Name -EQ '$ADGroupName'" -Properties Members
If ($Group -EQ $Null -OR $Group.PropertyNames -NotContains 'Members')
{
# This only happens on the first iteration of the loop!
Write-Error "$ADGroupName was null or was missing the Members property!"
}
Else
{
Write-Host "$ADGroupName contains $($Group.Members.Count) members."
}
}

关于powershell - 这是PowerShell中的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22669155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com