Finding ADDomainController with wild card

Welcome Forums General PowerShell Q&A Finding ADDomainController with wild card

This topic contains 2 replies, has 2 voices, and was last updated by

 
Participant
1 year, 3 months ago.

  • Author
    Posts
  • #82762

    Participant
    Points: 58
    Rank: Member

    I have been working on a script to connect to create AD Objects for a company with a number of remote sites. Because some of the sites have very slow links replication can be a pain so I thought to connect to the DC in the particular site and create it there. In looking at the docs on Get-ADDomainController, however, there seems to be no support for wildcards. I tried to do a two-step, something like this:

    $aDCs = Get-ADDomainController -Filter * | Select-Object Name
    
    ForEach ($sDC in $aDCs) {
        If ($sDC.Name -like "ATL") {
            Write-Host $sDC.Name
        }
    }
    

    to grab the domain controller "ATL-DC03", but that does not work. I can see ATL-DC03 in $aDCs, and if I remove the if statement if prints all of the DC names, including the one I am after, but I cannot seem to match it and get only that one. I have tried -like, -contains, and just about every other comparison I can think of, but no joy. Is there an easy way to get this done? Or better yet a way to do the comparison right in the Get-ADDomainController line? I tried a couple variances on this:

    Get-ADDomainController -Filter * | Where-Object ($_.Name -like "ATL")
    

    But similarly no luck. Any suggestions would be most welcome

  • #82778

    Participant
    Points: 711
    Helping Hand
    Rank: Major Contributor

    This is because if you are looking for all DC's with ATL in the as the name, you really need to use 'ATL*' not just 'ATL'.
    You can also use RegEx matches directly and do this in one line.

    For example, try —
    $aDCs = (Get-ADDomainController -Filter * | Select-Object Name) -match 'ATLDC'

    Or using what you submitted a couple of ways...

    $aDCs = Get-ADDomainController -Filter * | Select-Object Name

    ForEach ($sDC in $aDCs) {
    If ($sDC.Name -like "ATL*") {
    $sDC.Name
    }
    }

    Note – if you are just outputting to the console, you really don't need the write-* thing.
    Secondly, if you are to put things on the pipeline, Write-Host is not a thing to use.

    You can write to the console without write-*, just by using strings as follows...

    $sDC.Name
    "$sDC.Name"
    ($sDC.Name)
    Write-Output 'whatever'

    even in output combination.

    'Getting DC named' + $sDC.Name
    "Getting DC named $sDC.Name"

    You only really need Write-Host, if you are outputting color to the console in your output, or other formatting needs.

  • #82789

    Participant
    Points: 58
    Rank: Member

    Thanks, that worked. In all I tried I didn't get the syntax correct. And yes, the output to the console is due to it being part of a larger script – actually reading the STDOut with -ForegroundColor parameter and pulling that into a custom GUI. Thanks again for the push in the right direction.

The topic ‘Finding ADDomainController with wild card’ is closed to new replies.

denizli escort samsun escort muğla escort ataşehir escort kuşadası escort