当我提供字符串并需要提取域用户对象(名称,姓氏,经理名称)时,我会通过以下代码获得所需的详细信息。
Select *, RiskWeight = Sum(Riskwight) over (Partition by Id, [Year] order by [Month])
from (
Select Id, [Year], [Month], RiskWight = Sum(riskWight) from inputtable
Group by Id, [Year], [Month]
) a
order by [year], [Month]
接下来是输入的验证,如果它是域组,则提取组成员名称,然后再次获取用户对象信息,如上所述。问题是我无法验证字符串是否是一个组。
$groupdetail : gc d:\domainobject.txt
$output = Get-ADUser $GroupDetail
$output | Select Name, GivenName,SurName, @{label="Manager";expression={(Get-ADUser $_.Manager -Properties DisplayName).Displayname}}
两个条件都应该在一个代码中运行,因此如果输入字符串是域用户,则获取信息并退出。 Incase string是一个域组,它将循环获取组成员名称,然后提取域用户信息。我想的一种方法是运行这个条件$groupname = Get-content D:\domainobject.txt
foreach ($group in $groupname){
$groupname = get-adgroup $group
$groupmember = Get-ADGroupMember $groupname | Format-Table Name, SamAccountName -AutoSize
foreach ($groupdetail in $groupmember){
$groupdoutput = get-aduser $groupdetail
$groupoutput | Select-Object Name, GivenName,SurName, @{label="Manager";expression={(Get-ADUser $_.Manager -Properties DisplayName).Displayname}}
}
Write-Host $groupoutput
}
或$groupname.objectclass -eq "group"
,这样我就需要将输入字符串转换为PowerShell对象。
我尝试了一些东西但是没有用。请建议我可以实现的目标是什么。
答案 0 :(得分:0)
你总是可以使用try-catch块
try{$group = get-adgroup $groupname}
catch{$user = get-aduser $groupname}
if($group)
{write-host "It's a group!"}
else
{Write-host "It's a user!"}
这将告诉您它是组还是用户。只需用您的逻辑替换write-host
即可。
答案 1 :(得分:0)
通常在做这类事情时,我想要两件事之一:
在第一种情况下,如果我想要用户直接成员的组而不管嵌套,那么我指定:
Get-AdUser -Identity 'Alice' -Properties MemberOf
这将返回带有用户的MemberOf属性,该用户是一个字符串数组,在每个元素中包含用户所属组的可分辨名称。根据您正在做的事情,可以立即从AD获取所有组以集中获取组详细信息,然后对每个MemberOf进行查找。
在第二种情况下,我只关心用户帐户的有效组成员资格。我希望Get-AdGroupMember
将嵌套组解析为生成的用户集。换句话说,如果我运行Get-AdGroupMember -Identity 'Foo'
,并且成员是用户Alice
和组Bar
,而用户Bob
是组Bar
的成员,那么我希望cmdlet返回Alice
和Bob
。我并不关心Bar
Bob
是Foo
的原因Get-AdGroupMember -Identity 'Foo' -Recurse
。为此,我运行:
<ui-carousel
slides-to-show="calculateGamesCount"
slides-to-scroll="calculateGamesCount">
...
</ui-carousel>