---
title: 'Run a Powershell command based on OU Membership'
url: 'https://bsb.perryconsulting.net/blog/run-a-powershell-command-based-on-ou-membership'
markdown: 'https://bsb.perryconsulting.net/blog/run-a-powershell-command-based-on-ou-membership.md'
date: '2016-10-14'
description: "Admit it. Be honest now. We've all done it. We've run a command against a batch of users and forgot to limit the scope to the ones we were really targeting. I rece"
taxonomy:
  category:
    - snippets
  tag:
    - active-directory
    - powershell
---

# Run a Powershell command based on OU Membership

 14 OCT 2016  [active-directory](https://bsb.perryconsulting.net/blog/tag:active-directory) [powershell](https://bsb.perryconsulting.net/blog/tag:powershell)  

  Admit it. Be honest now. We've all done it. We've run a command against a batch of users and forgot to limit the scope to the ones we were really targeting.

I recently had to write a small Powershell-based application that loads all the users in a domain (filtered to exclude service accounts and admins) into a combobox. Once loaded, the user of the application can select the one user that they are trying to affect. The tricky part is that there is an if clause to run extra commands on the target if their OU has a specific parent OU, and not run those commands if their OU has a different parent OU. So, how do you tell Powershell to check for OU membership? The AD DistinguishedName property has the answer, but you have to tell Powershell how to read it.

POWERSHELL

```
<span class="line"><span class="line-number" style="color: #88929d;-webkit-user-select: none"> 1</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">$</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">distinguishedName</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">Get-ADUser</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">-</span><span class="token">Server </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">dc.domain.com</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">-</span><span class="token">Identity username </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">-</span><span class="token">Properties DistinguishedName </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">|</span><span class="token"> Select </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">-</span><span class="token">Property DistinguishedName
</span></span><span class="line"><span class="line-number" style="color: #88929d;-webkit-user-select: none"> 2</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token">(</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">$</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">distinguishedName</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">-split</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">,</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">-contains</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">OU=Targeted</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token">)</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="line-number" style="color: #88929d;-webkit-user-select: none"> 3</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">Get-ADUser</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">-</span><span class="token">Server </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">dc.domain.com</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">-</span><span class="token">Identity username </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">|</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">Set-ADUser</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">-</span><span class="token">ChangePasswordAtLogon </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">$</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">true</span><span class="token">
</span></span><span class="line"><span class="line-number" style="color: #88929d;-webkit-user-select: none"> 4</span><span class="token">}</span><span class="token">
</span></span>
```

The `-split ","` is the key that tells Powershell how to parse the DistinguishedName property. Once Powershell parses the property, then the `-contains` can properly search the string for a match.

---

## Navigation

- Parent: [Blog](https://bsb.perryconsulting.net/blog.md)
- Previous: [Using XAML (WPF) To Build A PowerShell GUI](https://bsb.perryconsulting.net/blog/using-xaml-wpf-to-build-a-powershell-gui.md)
- Next: [Navigate AD with Powershell](https://bsb.perryconsulting.net/blog/navigate-ad-with-powershell.md)
