需要验证用户输入(域用户,组)和获取详细信息

时间:2017-07-31 14:42:50

标签: powershell powershell-v4.0

当我提供字符串并需要提取域用户对象(名称,姓氏,经理名称)时,我会通过以下代码获得所需的详细信息。

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对象。 我尝试了一些东西但是没有用。请建议我可以实现的目标是什么。

2 个答案:

答案 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返回AliceBob。我并不关心Bar BobFoo的原因Get-AdGroupMember -Identity 'Foo' -Recurse 。为此,我运行:

<ui-carousel 
    slides-to-show="calculateGamesCount"
    slides-to-scroll="calculateGamesCount"> 
      ... 
</ui-carousel>