Get-Aduser来自带有通配符的名字和姓氏的提示

时间:2015-05-26 15:55:48

标签: powershell

我找不到任何人试图提示输入姓名,然后将其放入带通配符的变量中。

如果我用星号代替实际值,它可以正常工作但尝试使用变量返回任何内容。

$LastName = Read-Host "Enter user's Last Name" 
$FirstName = Read-Host "Enter users's First Name" 

$GroupMembershipList = (Get-ADUser -Filter {(GivenName -like $FirstName*) -and (Surname -like $LastName*)}).SAMAccountName

Foreach ($Name in $GroupMembershipList) {

  $GroupMemberShip = Get-ADPrincipalGroupMembership -Identity "$Name" | Sort Name |ForEach-Object {$_.name -replace ".*:"} 
  $FullName = Get-ADUser $Name -Properties * | Select -Property DisplayName 
  $UserPrincipalName = Get-ADUser $Name -Properties * | Select -Property UserPrincipalName

  #Write-Output $PrincipalName
  Write-Output $FullName
  Write-Output $Name
  Write-Output $GroupMembership
  Write-Output " "

}

3 个答案:

答案 0 :(得分:2)

我认为问题只是你的大括号阻止你的变量按照你期望的方式扩展。

我提供此功能,因为$GroupMembershipList = Get-ADUser -Filter "GivenName -like '$FirstName*' -and Surname -like '$LastName*'" | Select-Object -ExpandProperty SamAccountName 也适用于格式正确的字符串。

$GroupMembershipList = (Get-ADUser -Filter "GivenName -like '$FirstName*' -and Surname -like '$LastName*'").SamAccountName

是的,你可以像以前一样获得财产

{{1}}

答案 1 :(得分:0)

我使用了第二个建议并且它有效。我是PS的新手,也是一般的编程。

我发现PS有时会对括号,括号等的位置感到困惑。我通常有逻辑,但却放弃了这些分隔符。

你提到格式化我的代码。对不起,我不知道你的意思。

另外,我宁愿使用Write-Host来允许格式化,但是当我这样做时,所有数据都在一行上,并且返回的用户被指定为@ {DisplayName = Doe,John}。

您能解决这个问题,还是应该将其发布到新主题?

我更多地研究了它,并想出了写主机的东西。还添加了Do Loop

$ErrorActionPreference = "Stop"
$Continue = "Quit"

Do {

$LastName = Read-Host "Enter user's Last Name" 
$FirstName = Read-Host "Enter users's First Name" 
$GroupMembershipList = (Get-ADUser -Filter "GivenName -like '$FirstName*' -and Surname -like '$LastName*'").SamAccountName

    Foreach ($Name in $GroupMembershipList) {

    $GroupMemberShip = Get-ADPrincipalGroupMembership -Identity "$Name" | Sort Name |ForEach-Object {$_.name -replace ".*:"} 

    Write-Host " "
    Write-Host $FirstName, $LastName -ForegroundColor Yellow
    Write-Host IMC UserName = $Name 
    Write-Host "*****************************" -ForegroundColor Red
    Write-Host "Groups $Firstname $LastName is a member of:" -ForegroundColor Yellow
    $GroupMembership 
    Write-Host " " 

}

$Continue = Read-Host "Do you want to check another name? (Y/N)"

    If($Continue -eq "Y"){
    }
}
until ($Continue -eq "N")

答案 2 :(得分:-1)

$GivenName = read-host "What's the users first name (wildcard * ok)?"
$Surname = read-host "What's the users last name (wildcard * ok)?"
Get-ADUser -filter{(Surname -like $Surname -and GivenName -like $GivenName)} -properties GivenName, Surname, UserPrincipalName, mobile