en-US/Adsi-help.xml

<?xml version="1.0" encoding="utf-8"?>
<helpItems schema="maml" xmlns="http://msh">
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-DomainFqdnToLdapPath</command:name>
      <command:verb>Add</command:verb>
      <command:noun>DomainFqdnToLdapPath</command:noun>
      <maml:description>
        <maml:para>Add a domain FQDN to an LDAP directory path as the server address so the new path can be used for remote queries</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses RegEx to:
Match the Domain Components from the Distinguished Name in the LDAP directory path
Convert the Domain Components to an FQDN
Insert them into the directory path as the server address</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-DomainFqdnToLdapPath</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>DirectoryPath</maml:name>
          <maml:description>
            <maml:para>Incomplete LDAP directory path containing a distinguishedName but lacking a server address</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>DirectoryPath</maml:name>
        <maml:description>
          <maml:para>Incomplete LDAP directory path containing a distinguishedName but lacking a server address</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.String]$DirectoryPath</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.String] Complete LDAP directory path including server address</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Add-DomainFqdnToLdapPath -DirectoryPath 'LDAP://CN=user1,OU=UsersOU,DC=ad,DC=contoso,DC=com'
LDAP://ad.contoso.com/CN=user1,OU=UsersOU,DC=ad,DC=contoso,DC=com</dev:code>
        <dev:remarks>
          <maml:para>Add the domain FQDN to a single LDAP directory path</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-SidInfo</command:name>
      <command:verb>Add</command:verb>
      <command:noun>SidInfo</command:noun>
      <maml:description>
        <maml:para>Add some useful properties to a DirectoryEntry object for easier access</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Add SidString, Domain, and SamAccountName NoteProperties to a DirectoryEntry</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-SidInfo</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>Expecting a [System.DirectoryServices.DirectoryEntry] from the LDAP or WinNT providers, or a [PSCustomObject] imitation from Get-DirectoryEntry. Must contain the objectSid property</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
          <dev:type>
            <maml:name>System.Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>DirectoryEntryCache</maml:name>
          <maml:description>
            <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>TrustedDomainSidNameMap</maml:name>
          <maml:description>
            <maml:para>Hashtable containing known domain SIDs as the keys and their names as the values</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
          <dev:type>
            <maml:name>System.Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>(Get-TrustedDomainSidNameMap -DirectoryEntryCache $DirectoryEntryCache)</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>DirectoryEntryCache</maml:name>
        <maml:description>
          <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>Expecting a [System.DirectoryServices.DirectoryEntry] from the LDAP or WinNT providers, or a [PSCustomObject] imitation from Get-DirectoryEntry. Must contain the objectSid property</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>TrustedDomainSidNameMap</maml:name>
        <maml:description>
          <maml:para>Hashtable containing known domain SIDs as the keys and their names as the values</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>(Get-TrustedDomainSidNameMap -DirectoryEntryCache $DirectoryEntryCache)</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry] or a [PSCustomObject] imitation. InputObject parameter. Must contain the objectSid property.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry] or a [PSCustomObject] imitation. Whatever was input, but with three extra properties added now.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>[System.DirectoryServices.DirectoryEntry]::new('WinNT://localhost/Administrator') | Add-SidInfo
distinguishedName :
Path : WinNT://localhost/Administrator</dev:code>
        <dev:remarks>
          <maml:para>The output object's default format is not modified so with default formatting it appears identical to the original. Upon closer inspection it now has SidString, Domain, and SamAccountName properties.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-Win32AccountToCache</command:name>
      <command:verb>Add</command:verb>
      <command:noun>Win32AccountToCache</command:noun>
      <maml:description>
        <maml:para>{{ Fill in the Synopsis }}</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>{{ Fill in the Description }}</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-Win32AccountToCache</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
          <maml:name>SidCache</maml:name>
          <maml:description>
            <maml:para>{{ Fill SidCache Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>CaptionCache</maml:name>
          <maml:description>
            <maml:para>{{ Fill CaptionCache Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>AdsiServerCache</maml:name>
          <maml:description>
            <maml:para>{{ Fill AdsiServerCache Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>AdsiServerCache</maml:name>
        <maml:description>
          <maml:para>{{ Fill AdsiServerCache Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>CaptionCache</maml:name>
        <maml:description>
          <maml:para>{{ Fill CaptionCache Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="0" aliases="none">
        <maml:name>SidCache</maml:name>
        <maml:description>
          <maml:para>{{ Fill SidCache Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>PS C:\&gt; {{ Add example code here }}</dev:code>
        <dev:remarks>
          <maml:para>{{ Add example description here }}</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertFrom-DirectoryEntry</command:name>
      <command:verb>ConvertFrom</command:verb>
      <command:noun>DirectoryEntry</command:noun>
      <maml:description>
        <maml:para>Convert a DirectoryEntry to a PSCustomObject</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Recursively convert every property into a string, or a PSCustomObject (whose properties are all strings, or more PSCustomObjects) This obfuscates the troublesome PropertyCollection and PropertyValueCollection and Hashtable aspects of working with ADSI</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertFrom-DirectoryEntry</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>DirectoryEntry</maml:name>
          <maml:description>
            <maml:para>{{ Fill DirectoryEntry Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.DirectoryServices.DirectoryEntry[]</command:parameterValue>
          <dev:type>
            <maml:name>System.DirectoryServices.DirectoryEntry[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>DirectoryEntry</maml:name>
        <maml:description>
          <maml:para>{{ Fill DirectoryEntry Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.DirectoryServices.DirectoryEntry[]</command:parameterValue>
        <dev:type>
          <maml:name>System.DirectoryServices.DirectoryEntry[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>PS C:\&gt; {{ Add example code here }}</dev:code>
        <dev:remarks>
          <maml:para>{{ Add example description here }}</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>TODO: There is a faster way than Select-Object, just need to dig into the default formatting of DirectoryEntry to see how to get those properties</command:name>
      <command:verb>TODO: There is a faster way than Select</command:verb>
      <command:noun>Object, just need to dig into the default formatting of DirectoryEntry to see how to get those properties</command:noun>
      <maml:description />
    </command:details>
    <maml:description />
    <command:syntax />
    <command:parameters />
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert />
    </maml:alertSet>
    <command:examples />
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertFrom-PropertyValueCollectionToString</command:name>
      <command:verb>ConvertFrom</command:verb>
      <command:noun>PropertyValueCollectionToString</command:noun>
      <maml:description>
        <maml:para>Convert a PropertyValueCollection to a string</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Useful when working with System.DirectoryServices and some other namespaces</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertFrom-PropertyValueCollectionToString</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>PropertyValueCollection</maml:name>
          <maml:description>
            <maml:para>{{ Fill PropertyValueCollection Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.DirectoryServices.PropertyValueCollection</command:parameterValue>
          <dev:type>
            <maml:name>System.DirectoryServices.PropertyValueCollection</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>PropertyValueCollection</maml:name>
        <maml:description>
          <maml:para>{{ Fill PropertyValueCollection Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.DirectoryServices.PropertyValueCollection</command:parameterValue>
        <dev:type>
          <maml:name>System.DirectoryServices.PropertyValueCollection</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None. Pipeline input is not accepted.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.String]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>$DirectoryEntry = [adsi]("WinNT://$(hostname)")
$DirectoryEntry.Properties.Keys |
ForEach-Object {
    ConvertFrom-PropertyValueCollectionToString -PropertyValueCollection $DirectoryEntry.Properties[$_]
}</dev:code>
        <dev:remarks>
          <maml:para>For each property in a DirectoryEntry, convert its corresponding PropertyValueCollection to a string</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertTo-DecStringRepresentation</command:name>
      <command:verb>ConvertTo</command:verb>
      <command:noun>DecStringRepresentation</command:noun>
      <maml:description>
        <maml:para>Convert a byte array to a string representation of its decimal format</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses the custom format operator -f to format each byte as a string decimal representation</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertTo-DecStringRepresentation</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>ByteArray</maml:name>
          <maml:description>
            <maml:para>Byte array. Often the binary format of an objectSid or LoginHours</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Byte[]</command:parameterValue>
          <dev:type>
            <maml:name>System.Byte[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>ByteArray</maml:name>
        <maml:description>
          <maml:para>Byte array. Often the binary format of an objectSid or LoginHours</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Byte[]</command:parameterValue>
        <dev:type>
          <maml:name>System.Byte[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.Byte[]]$ByteArray</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.String] Array of strings representing the byte array's decimal values</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>ConvertTo-DecStringRepresentation -ByteArray $Bytes</dev:code>
        <dev:remarks>
          <maml:para>Convert the binary SID $Bytes to a decimal string representation</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertTo-DistinguishedName</command:name>
      <command:verb>ConvertTo</command:verb>
      <command:noun>DistinguishedName</command:noun>
      <maml:description>
        <maml:para>Convert a domain NetBIOS name to its distinguishedName</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>https://docs.microsoft.com/en-us/windows/win32/api/iads/nn-iads-iadsnametranslate</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertTo-DistinguishedName</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>Domain</maml:name>
          <maml:description>
            <maml:para>NetBIOS name of the domain</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>Domain</maml:name>
        <maml:description>
          <maml:para>NetBIOS name of the domain</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.String]$Domain</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.String] distinguishedName of the domain</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>ConvertTo-DistinguishedName -Domain 'CONTOSO'
DC=ad,DC=contoso,DC=com</dev:code>
        <dev:remarks>
          <maml:para>Resolve the NetBIOS domain 'CONTOSO' to its distinguishedName 'DC=ad,DC=contoso,DC=com'</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertTo-Fqdn</command:name>
      <command:verb>ConvertTo</command:verb>
      <command:noun>Fqdn</command:noun>
      <maml:description>
        <maml:para>Convert a domain distinguishedName name to its FQDN</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses PowerShell's -replace operator to perform the conversion</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertTo-Fqdn</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>DistinguishedName</maml:name>
          <maml:description>
            <maml:para>distinguishedName of the domain</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>DistinguishedName</maml:name>
        <maml:description>
          <maml:para>distinguishedName of the domain</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.String]$DistinguishedName</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.String] FQDN version of the distinguishedName</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>ConvertTo-Fqdn -DistinguishedName 'DC=ad,DC=contoso,DC=com'
ad.contoso.com</dev:code>
        <dev:remarks>
          <maml:para>Convert the domain distinguishedName 'DC=ad,DC=contoso,DC=com' to its FQDN format 'ad.contoso.com'</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertTo-HexStringRepresentation</command:name>
      <command:verb>ConvertTo</command:verb>
      <command:noun>HexStringRepresentation</command:noun>
      <maml:description>
        <maml:para>Convert a SID from byte array format to a string representation of its hexadecimal format</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses the custom format operator -f to format each byte as a string hex representation</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertTo-HexStringRepresentation</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>SIDByteArray</maml:name>
          <maml:description>
            <maml:para>SID</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Byte[]</command:parameterValue>
          <dev:type>
            <maml:name>System.Byte[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>SIDByteArray</maml:name>
        <maml:description>
          <maml:para>SID</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Byte[]</command:parameterValue>
        <dev:type>
          <maml:name>System.Byte[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.Byte[]]$SIDByteArray</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.String] SID as an array of strings representing the byte array's hexadecimal values</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>ConvertTo-HexStringRepresentation -SIDByteArray $Bytes</dev:code>
        <dev:remarks>
          <maml:para>Convert the binary SID $Bytes to a hexadecimal string representation</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertTo-HexStringRepresentationForLDAPFilterString</command:name>
      <command:verb>ConvertTo</command:verb>
      <command:noun>HexStringRepresentationForLDAPFilterString</command:noun>
      <maml:description>
        <maml:para>Convert a SID from byte array format to a string representation of its hexadecimal format, properly formatted for an LDAP filter string</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses the custom format operator -f to format each byte as a string hex representation</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertTo-HexStringRepresentationForLDAPFilterString</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>SIDByteArray</maml:name>
          <maml:description>
            <maml:para>SID to convert to a hex string</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Byte[]</command:parameterValue>
          <dev:type>
            <maml:name>System.Byte[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>SIDByteArray</maml:name>
        <maml:description>
          <maml:para>SID to convert to a hex string</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Byte[]</command:parameterValue>
        <dev:type>
          <maml:name>System.Byte[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.Byte[]]$SIDByteArray</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.String] SID as an array of strings representing the byte array's hexadecimal values</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>ConvertTo-HexStringRepresentationForLDAPFilterString -SIDByteArray $Bytes</dev:code>
        <dev:remarks>
          <maml:para>Convert the binary SID $Bytes to a hexadecimal string representation, formatted for use in an LDAP filter string</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>ConvertTo-SidByteArray</command:name>
      <command:verb>ConvertTo</command:verb>
      <command:noun>SidByteArray</command:noun>
      <maml:description>
        <maml:para>Convert a SID from a string to binary format (byte array)</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses the GetBinaryForm method of the [System.Security.Principal.SecurityIdentifier] class</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>ConvertTo-SidByteArray</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>SidString</maml:name>
          <maml:description>
            <maml:para>SID to convert to binary</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>SidString</maml:name>
        <maml:description>
          <maml:para>SID to convert to binary</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.String]$SidString</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.Byte] SID a a byte array</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>ConvertTo-SidByteArray -SidString $SID</dev:code>
        <dev:remarks>
          <maml:para>Convert the SID string to a byte array</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Expand-AdsiGroupMember</command:name>
      <command:verb>Expand</command:verb>
      <command:noun>AdsiGroupMember</command:noun>
      <maml:description>
        <maml:para>Use the LDAP provider to add information about group members to a DirectoryEntry of a group for easier access</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Recursively retrieves group members and detailed information about them</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Expand-AdsiGroupMember</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>DirectoryEntry</maml:name>
          <maml:description>
            <maml:para>Expecting a DirectoryEntry from the LDAP or WinNT providers, or a PSObject imitation from Get-DirectoryEntry</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
          <dev:type>
            <maml:name>System.Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>PropertiesToLoad</maml:name>
          <maml:description>
            <maml:para>Properties of the group members to retrieve</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>@('operatingSystem', 'objectSid', 'samAccountName', 'objectClass', 'distinguishedName', 'name', 'grouptype', 'description', 'managedby', 'member', 'objectClass', 'Department', 'Title')</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>DirectoryEntryCache</maml:name>
          <maml:description>
            <maml:para>Hashtable containing cached directory entries so they don't need to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>TrustedDomainSidNameMap</maml:name>
          <maml:description>
            <maml:para>Hashtable containing known domain SIDs as the keys and their names as the values</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
          <dev:type>
            <maml:name>System.Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>(Get-TrustedDomainSidNameMap -DirectoryEntryCache $DirectoryEntryCache)</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>DirectoryEntry</maml:name>
        <maml:description>
          <maml:para>Expecting a DirectoryEntry from the LDAP or WinNT providers, or a PSObject imitation from Get-DirectoryEntry</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>DirectoryEntryCache</maml:name>
        <maml:description>
          <maml:para>Hashtable containing cached directory entries so they don't need to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>PropertiesToLoad</maml:name>
        <maml:description>
          <maml:para>Properties of the group members to retrieve</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>@('operatingSystem', 'objectSid', 'samAccountName', 'objectClass', 'distinguishedName', 'name', 'grouptype', 'description', 'managedby', 'member', 'objectClass', 'Department', 'Title')</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>TrustedDomainSidNameMap</maml:name>
        <maml:description>
          <maml:para>Hashtable containing known domain SIDs as the keys and their names as the values</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>(Get-TrustedDomainSidNameMap -DirectoryEntryCache $DirectoryEntryCache)</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry]$DirectoryEntry</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry] Returned with member info added now (if the DirectoryEntry is a group).</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>[System.DirectoryServices.DirectoryEntry]::new('WinNT://localhost/Administrators') | Get-AdsiGroupMember | Expand-AdsiGroupMember</dev:code>
        <dev:remarks>
          <maml:para>Need to fix example and add notes</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Expand-IdentityReference</command:name>
      <command:verb>Expand</command:verb>
      <command:noun>IdentityReference</command:noun>
      <maml:description>
        <maml:para>Use ADSI to collect more information about the IdentityReference in NTFS Access Control Entries</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Recursively retrieves group members and detailed information about them Use caching to reduce duplicate directory queries</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Expand-IdentityReference</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>AccessControlEntry</maml:name>
          <maml:description>
            <maml:para>The NTFS AccessControlEntry object(s), grouped by their IdentityReference property TODO: Use System.Security.Principal.NTAccount instead</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Object[]</command:parameterValue>
          <dev:type>
            <maml:name>System.Object[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>DirectoryEntryCache</maml:name>
          <maml:description>
            <maml:para>Thread-safe hashtable to use for caching directory entries and avoiding duplicate directory queries</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>IdentityReferenceCache</maml:name>
          <maml:description>
            <maml:para>Thread-safe hashtable to use for caching directory entries and avoiding duplicate directory queries</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>NoGroupMembers</maml:name>
          <maml:description>
            <maml:para>Do not get group members</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>System.Management.Automation.SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>AccessControlEntry</maml:name>
        <maml:description>
          <maml:para>The NTFS AccessControlEntry object(s), grouped by their IdentityReference property TODO: Use System.Security.Principal.NTAccount instead</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Object[]</command:parameterValue>
        <dev:type>
          <maml:name>System.Object[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>DirectoryEntryCache</maml:name>
        <maml:description>
          <maml:para>Thread-safe hashtable to use for caching directory entries and avoiding duplicate directory queries</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>IdentityReferenceCache</maml:name>
        <maml:description>
          <maml:para>Thread-safe hashtable to use for caching directory entries and avoiding duplicate directory queries</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>NoGroupMembers</maml:name>
        <maml:description>
          <maml:para>Do not get group members</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Management.Automation.SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>System.Management.Automation.SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.Object]$AccessControlEntry</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.Object] The input object is returned with additional properties added:</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>DirectoryEntry</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>DomainDn</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>DomainNetBIOS</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>ObjectType</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>Members (if the DirectoryEntry is a group).</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>(Get-Acl).Access |
Resolve-IdentityReference |
Group-Object -Property IdentityReferenceResolved |
Expand-IdentityReference</dev:code>
        <dev:remarks>
          <maml:para>Incomplete example but it shows the chain of functions to generate the expected input for this</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Expand-WinNTGroupMember</command:name>
      <command:verb>Expand</command:verb>
      <command:noun>WinNTGroupMember</command:noun>
      <maml:description>
        <maml:para>Use the LDAP provider to add information about group members to a DirectoryEntry of a group for easier access</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Recursively retrieves group members and detailed information about them</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Expand-WinNTGroupMember</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>DirectoryEntry</maml:name>
          <maml:description>
            <maml:para>Expecting a DirectoryEntry from the WinNT provider, or a PSObject imitation from Get-DirectoryEntry</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
          <dev:type>
            <maml:name>System.Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>DirectoryEntryCache</maml:name>
          <maml:description>
            <maml:para>Hashtable containing cached directory entries so they don't need to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>DirectoryEntry</maml:name>
        <maml:description>
          <maml:para>Expecting a DirectoryEntry from the WinNT provider, or a PSObject imitation from Get-DirectoryEntry</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>DirectoryEntryCache</maml:name>
        <maml:description>
          <maml:para>Hashtable containing cached directory entries so they don't need to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry]$DirectoryEntry</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry] Returned with member info added now (if the DirectoryEntry is a group).</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>[System.DirectoryServices.DirectoryEntry]::new('WinNT://localhost/Administrators') | Get-WinNTGroupMember | Expand-WinNTGroupMember</dev:code>
        <dev:remarks>
          <maml:para>Need to fix example and add notes</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Find-AdsiProvider</command:name>
      <command:verb>Find</command:verb>
      <command:noun>AdsiProvider</command:noun>
      <maml:description>
        <maml:para>Determine whether a directory server is an LDAP or a WinNT server</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses the ADSI provider to attempt to query the server using LDAP first, then WinNT second</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Find-AdsiProvider</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>AdsiServer</maml:name>
          <maml:description>
            <maml:para>IP address or hostname of the directory server whose ADSI provider type to determine</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>AdsiServer</maml:name>
        <maml:description>
          <maml:para>IP address or hostname of the directory server whose ADSI provider type to determine</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.String] AdsiServer parameter.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.String] Possible return values are:</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>None</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>LDAP</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>WinNT</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Find-AdsiProvider -AdsiServer localhost</dev:code>
        <dev:remarks>
          <maml:para>Find the ADSI provider of the local computer</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Find-AdsiProvider -AdsiServer 'ad.contoso.com'</dev:code>
        <dev:remarks>
          <maml:para>Find the ADSI provider of the AD domain 'ad.contoso.com'</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Find-ServerNameInPath</command:name>
      <command:verb>Find</command:verb>
      <command:noun>ServerNameInPath</command:noun>
      <maml:description>
        <maml:para>Parse a literal path to find its server</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Currently only supports local file paths or UNC paths</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Find-ServerNameInPath</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>LiteralPath</maml:name>
          <maml:description>
            <maml:para>{{ Fill LiteralPath Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
          <dev:type>
            <maml:name>System.String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>LiteralPath</maml:name>
        <maml:description>
          <maml:para>{{ Fill LiteralPath Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
        <dev:type>
          <maml:name>System.String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None. Pipeline input is not accepted.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.String] representing the name of the server that was extracted from the path</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Find-ServerNameInPath -LiteralPath 'C:\Test'</dev:code>
        <dev:remarks>
          <maml:para>Return the hostname of the local computer because a local filepath was used</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Find-ServerNameInPath -LiteralPath '\\server123\Test\'</dev:code>
        <dev:remarks>
          <maml:para>Return server123 because a UNC path for a folder shared on server123 was used</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-AdsiGroup</command:name>
      <command:verb>Get</command:verb>
      <command:noun>AdsiGroup</command:noun>
      <maml:description>
        <maml:para>Get the directory entries for a group and its members using ADSI</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses the ADSI components to search a directory for a group, then get its members Both the WinNT and LDAP providers are supported</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-AdsiGroup</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>DirectoryPath</maml:name>
          <maml:description>
            <maml:para>Path to the directory object to retrieve Defaults to the root of the current domain</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
          <dev:type>
            <maml:name>System.String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>(([System.DirectoryServices.DirectorySearcher]::new()).SearchRoot.Path)</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>GroupName</maml:name>
          <maml:description>
            <maml:para>Name (CN or Common Name) of the group to retrieve</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
          <dev:type>
            <maml:name>System.String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>PropertiesToLoad</maml:name>
          <maml:description>
            <maml:para>Properties of the group and its members to find in the directory</maml:para>
            <maml:para> [string[]]$PropertiesToLoad = @( 'department', 'description', 'distinguishedName', 'grouptype', 'managedby', 'member', 'name', 'objectClass', 'objectSid', 'operatingSystem', 'samAccountName', 'title' ),</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>DirectoryEntryCache</maml:name>
          <maml:description>
            <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>DirectoryEntryCache</maml:name>
        <maml:description>
          <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>DirectoryPath</maml:name>
        <maml:description>
          <maml:para>Path to the directory object to retrieve Defaults to the root of the current domain</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
        <dev:type>
          <maml:name>System.String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>(([System.DirectoryServices.DirectorySearcher]::new()).SearchRoot.Path)</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>GroupName</maml:name>
        <maml:description>
          <maml:para>Name (CN or Common Name) of the group to retrieve</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
        <dev:type>
          <maml:name>System.String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>PropertiesToLoad</maml:name>
        <maml:description>
          <maml:para>Properties of the group and its members to find in the directory</maml:para>
          <maml:para> [string[]]$PropertiesToLoad = @( 'department', 'description', 'distinguishedName', 'grouptype', 'managedby', 'member', 'name', 'objectClass', 'objectSid', 'operatingSystem', 'samAccountName', 'title' ),</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None. Pipeline input is not accepted.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry] for each group memeber</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-AdsiGroup -DirectoryPath 'WinNT://WORKGROUP/localhost' -GroupName Administrators</dev:code>
        <dev:remarks>
          <maml:para>Get members of the local Administrators group</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Get-AdsiGroup -GroupName Administrators</dev:code>
        <dev:remarks>
          <maml:para>On a domain-joined computer, this will get members of the domain's Administrators group On a workgroup computer, this will get members of the local Administrators group</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-AdsiGroupMember</command:name>
      <command:verb>Get</command:verb>
      <command:noun>AdsiGroupMember</command:noun>
      <maml:description>
        <maml:para>Get members of a group from the LDAP provider</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Use ADSI to get members of a group from the LDAP provider Return the group's DirectoryEntry plus a FullMembers property containing the member DirectoryEntries</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-AdsiGroupMember</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>Group</maml:name>
          <maml:description>
            <maml:para>Directory entry of the LDAP group whose members to get</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
          <dev:type>
            <maml:name>System.Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>PropertiesToLoad</maml:name>
          <maml:description>
            <maml:para>Properties of the group members to find in the directory</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>DirectoryEntryCache</maml:name>
          <maml:description>
            <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>DirectoryEntryCache</maml:name>
        <maml:description>
          <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>Group</maml:name>
        <maml:description>
          <maml:para>Directory entry of the LDAP group whose members to get</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>PropertiesToLoad</maml:name>
        <maml:description>
          <maml:para>Properties of the group members to find in the directory</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry]$DirectoryEntry</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry] plus a FullMembers property</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>[System.DirectoryServices.DirectoryEntry]::new('LDAP://ad.contoso.com/CN=Administrators,CN=BuiltIn,DC=ad,DC=contoso,DC=com') | Get-AdsiGroupMember</dev:code>
        <dev:remarks>
          <maml:para>Get members of the domain Administrators group</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-AdsiServer</command:name>
      <command:verb>Get</command:verb>
      <command:noun>AdsiServer</command:noun>
      <maml:description>
        <maml:para>Get information about a directory server including the ADSI provider it hosts and its well-known SIDs</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Uses the ADSI provider to query the server using LDAP first, then WinNT upon failure Uses WinRM to query the CIM class Win32_SystemAccount for well-known SIDs</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-AdsiServer</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>AdsiServer</maml:name>
          <maml:description>
            <maml:para>IP address or hostname of the directory server whose ADSI provider type to determine</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>KnownServers</maml:name>
          <maml:description>
            <maml:para>Cache of known directory servers to reduce duplicate queries</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>[hashtable]::Synchronized(@{})</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>AdsiServer</maml:name>
        <maml:description>
          <maml:para>IP address or hostname of the directory server whose ADSI provider type to determine</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>KnownServers</maml:name>
        <maml:description>
          <maml:para>Cache of known directory servers to reduce duplicate queries</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>[hashtable]::Synchronized(@{})</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.String]$AdsiServer</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[PSCustomObject] with AdsiProvider and WellKnownSIDs properties</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-AdsiServer -AdsiServer localhost</dev:code>
        <dev:remarks>
          <maml:para>Find the ADSI provider of the local computer</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Get-AdsiServer -AdsiServer 'ad.contoso.com'</dev:code>
        <dev:remarks>
          <maml:para>Find the ADSI provider of the AD domain 'ad.contoso.com'</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-CurrentDomain</command:name>
      <command:verb>Get</command:verb>
      <command:noun>CurrentDomain</command:noun>
      <maml:description>
        <maml:para>Use ADSI to get the current domain</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Works only on domain-joined systems, otherwise returns nothing</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-CurrentDomain</maml:name>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters />
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None. Pipeline input is not accepted.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry] The current domain</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-CurrentDomain</dev:code>
        <dev:remarks>
          <maml:para>Get the domain of the current computer</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-DirectoryEntry</command:name>
      <command:verb>Get</command:verb>
      <command:noun>DirectoryEntry</command:noun>
      <maml:description>
        <maml:para>Use Active Directory Service Interfaces to retrieve an object from a directory</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Retrieve a directory entry using either the WinNT or LDAP provider for ADSI</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-DirectoryEntry</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>DirectoryPath</maml:name>
          <maml:description>
            <maml:para>Path to the directory object to retrieve Defaults to the root of the current domain</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
          <dev:type>
            <maml:name>System.String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>(([System.DirectoryServices.DirectorySearcher]::new()).SearchRoot.Path)</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Credential</maml:name>
          <maml:description>
            <maml:para>Credentials to use to bind to the directory Defaults to the credentials of the current user</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Management.Automation.PSCredential</command:parameterValue>
          <dev:type>
            <maml:name>System.Management.Automation.PSCredential</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>PropertiesToLoad</maml:name>
          <maml:description>
            <maml:para>Properties of the target object to retrieve</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>DirectoryEntryCache</maml:name>
          <maml:description>
            <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Credential</maml:name>
        <maml:description>
          <maml:para>Credentials to use to bind to the directory Defaults to the credentials of the current user</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Management.Automation.PSCredential</command:parameterValue>
        <dev:type>
          <maml:name>System.Management.Automation.PSCredential</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>DirectoryEntryCache</maml:name>
        <maml:description>
          <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>DirectoryPath</maml:name>
        <maml:description>
          <maml:para>Path to the directory object to retrieve Defaults to the root of the current domain</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
        <dev:type>
          <maml:name>System.String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>(([System.DirectoryServices.DirectorySearcher]::new()).SearchRoot.Path)</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>PropertiesToLoad</maml:name>
        <maml:description>
          <maml:para>Properties of the target object to retrieve</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None. Pipeline input is not accepted.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry] where possible</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
      <command:returnValue>
        <dev:type>
          <maml:name>[PSCustomObject] for security principals with no directory entry</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-DirectoryEntry
distinguishedName : {DC=ad,DC=contoso,DC=com}
Path : LDAP://DC=ad,DC=contoso,DC=com</dev:code>
        <dev:remarks>
          <maml:para>As the current user on a domain-joined computer, bind to the current domain and retrieve the DirectoryEntry for the root of the domain</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Get-DirectoryEntry
distinguishedName :
Path : WinNT://ComputerName</dev:code>
        <dev:remarks>
          <maml:para>As the current user on a workgroup computer, bind to the local system and retrieve the DirectoryEntry for the root of the directory</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-TrustedDomainSidNameMap</command:name>
      <command:verb>Get</command:verb>
      <command:noun>TrustedDomainSidNameMap</command:noun>
      <maml:description>
        <maml:para>Returns a dictionary of trusted domains by the current computer</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Works only on domain-joined systems Use nltest to get the domain trust relationships for the domain of the current computer Use ADSI's LDAP provider to get each trusted domain's DNS name, NETBIOS name, and SID For each trusted domain the key is the domain's SID, or its NETBIOS name if the -KeyByNetbios switch parameter was used For each trusted domain the value contains the details retrieved with ADSI</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-TrustedDomainSidNameMap</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>DirectoryEntryCache</maml:name>
          <maml:description>
            <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>KeyByNetbios</maml:name>
          <maml:description>
            <maml:para>Key the dictionary by the domain NetBIOS names instead of SIDs</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>System.Management.Automation.SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>DirectoryEntryCache</maml:name>
        <maml:description>
          <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>KeyByNetbios</maml:name>
        <maml:description>
          <maml:para>Key the dictionary by the domain NetBIOS names instead of SIDs</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Management.Automation.SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>System.Management.Automation.SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None. Pipeline input is not accepted.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.Collections.Hashtable] The current domain trust relationships</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-TrustedDomainSidNameMap</dev:code>
        <dev:remarks>
          <maml:para>Get the trusted domains of the current computer</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-WellKnownSid</command:name>
      <command:verb>Get</command:verb>
      <command:noun>WellKnownSid</command:noun>
      <maml:description>
        <maml:para>Use CIM to get well-known SIDs</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Use WinRM to query the CIM namespace root/cimv2 for instances of the Win32_Account class</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-WellKnownSid</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>CimServerName</maml:name>
          <maml:description>
            <maml:para>{{ Fill CimServerName Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>CimServerName</maml:name>
        <maml:description>
          <maml:para>{{ Fill CimServerName Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.String]$CimServerName</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[Microsoft.Management.Infrastructure.CimInstance] for each instance of the Win32_Account class in the root/cimv2 namespace</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-WellKnownSid</dev:code>
        <dev:remarks>
          <maml:para>Get the well-known SIDs on the current computer</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Get-WellKnownSid -CimServerName 'server123'</dev:code>
        <dev:remarks>
          <maml:para>Get the well-known SIDs on the remote computer 'server123'</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-WinNTGroupMember</command:name>
      <command:verb>Get</command:verb>
      <command:noun>WinNTGroupMember</command:noun>
      <maml:description>
        <maml:para>Get members of a group from the WinNT provider</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Get members of a group from the WinNT provider Convert them from COM objects into usable DirectoryEntry objects</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-WinNTGroupMember</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>DirectoryEntry</maml:name>
          <maml:description>
            <maml:para>DirectoryEntry [System.DirectoryServices.DirectoryEntry] of the WinNT group whose members to get</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
          <dev:type>
            <maml:name>System.Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>DirectoryEntryCache</maml:name>
          <maml:description>
            <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>PropertiesToLoad</maml:name>
          <maml:description>
            <maml:para>Properties of the group members to find in the directory</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>KnownDomains</maml:name>
          <maml:description>
            <maml:para>Hashtable of domain DNs</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
          <dev:type>
            <maml:name>System.Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>(Get-TrustedDomainSidNameMap -DirectoryEntryCache $DirectoryEntryCache -KeyByNetbios)</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>DirectoryEntry</maml:name>
        <maml:description>
          <maml:para>DirectoryEntry [System.DirectoryServices.DirectoryEntry] of the WinNT group whose members to get</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>DirectoryEntryCache</maml:name>
        <maml:description>
          <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>KnownDomains</maml:name>
        <maml:description>
          <maml:para>Hashtable of domain DNs</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>(Get-TrustedDomainSidNameMap -DirectoryEntryCache $DirectoryEntryCache -KeyByNetbios)</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>PropertiesToLoad</maml:name>
        <maml:description>
          <maml:para>Properties of the group members to find in the directory</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry]$DirectoryEntry</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry] for each group member</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>[System.DirectoryServices.DirectoryEntry]::new('WinNT://localhost/Administrators') | Get-WinNTGroupMember</dev:code>
        <dev:remarks>
          <maml:para>Get members of the local Administrators group</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Invoke-ComObject</command:name>
      <command:verb>Invoke</command:verb>
      <command:noun>ComObject</command:noun>
      <maml:description>
        <maml:para>Invoke a member method of a ComObject [__ComObject]</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Use the InvokeMember method to invoke the InvokeMethod or GetProperty or SetProperty methods By default, invokes the GetProperty method for the specified Property If the Value parameter is specified, invokes the SetProperty method for the specified Property If the Method switch is specified, invokes the InvokeMethod method</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Invoke-ComObject</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>ComObject</maml:name>
          <maml:description>
            <maml:para>The ComObject whose member method to invoke</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
          <dev:type>
            <maml:name>System.Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Property</maml:name>
          <maml:description>
            <maml:para>The property to use with the invoked method</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
          <dev:type>
            <maml:name>System.String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>Value</maml:name>
          <maml:description>
            <maml:para>The value to set with the SetProperty method, or the name of the method to run with the InvokeMethod method</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
          <dev:type>
            <maml:name>System.Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>Method</maml:name>
          <maml:description>
            <maml:para>Use the InvokeMethod method of the ComObject</maml:para>
          </maml:description>
          <dev:type>
            <maml:name>System.Management.Automation.SwitchParameter</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>False</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>ComObject</maml:name>
        <maml:description>
          <maml:para>The ComObject whose member method to invoke</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>Method</maml:name>
        <maml:description>
          <maml:para>Use the InvokeMethod method of the ComObject</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Management.Automation.SwitchParameter</command:parameterValue>
        <dev:type>
          <maml:name>System.Management.Automation.SwitchParameter</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>False</dev:defaultValue>
      </command:parameter>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Property</maml:name>
        <maml:description>
          <maml:para>The property to use with the invoked method</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
        <dev:type>
          <maml:name>System.String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>Value</maml:name>
        <maml:description>
          <maml:para>The value to set with the SetProperty method, or the name of the method to run with the InvokeMethod method</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Object</command:parameterValue>
        <dev:type>
          <maml:name>System.Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None. Pipeline input is not accepted.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>The output of the invoked method is returned directly</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>$ComObject = [System.DirectoryServices.DirectoryEntry]::new('WinNT://localhost/Administrators').Invoke('Members') | Select -First 1
Invoke-ComObject -ComObject $ComObject -Property AdsPath</dev:code>
        <dev:remarks>
          <maml:para>Get the first member of the local Administrators group on the current computer Then use Invoke-ComObject to invoke the GetProperty method and return the value of the AdsPath property</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>New-FakeDirectoryEntry</command:name>
      <command:verb>New</command:verb>
      <command:noun>FakeDirectoryEntry</command:noun>
      <maml:description>
        <maml:para>Returns a PSCustomObject in place of a DirectoryEntry for certain WinNT security principals that do not have objects in the directory</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>The WinNT provider only throws an error if you try to retrieve certain accounts/identities We will create dummy objects instead of performing the query</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>New-FakeDirectoryEntry</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>DirectoryPath</maml:name>
          <maml:description>
            <maml:para>Path to the directory object to retrieve Defaults to the root of the current domain (but don't use it for that, just do this instead: [System.DirectoryServices.DirectorySearcher]::new())</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
          <dev:type>
            <maml:name>System.String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>DirectoryPath</maml:name>
        <maml:description>
          <maml:para>Path to the directory object to retrieve Defaults to the root of the current domain (but don't use it for that, just do this instead: [System.DirectoryServices.DirectorySearcher]::new())</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
        <dev:type>
          <maml:name>System.String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None. Pipeline input is not accepted.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.Management.Automation.PSCustomObject]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>---------- EXAMPLE 1 ----------
New-FakeDirectoryEntry -DirectoryPath 'WinNT://WORKGROUP/Computer/CREATOR OWNER'</dev:code>
        <dev:remarks>
          <maml:para>Create a fake DirectoryEntry to represent the CREATOR OWNER special security principal</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Resolve-Ace</command:name>
      <command:verb>Resolve</command:verb>
      <command:noun>Ace</command:noun>
      <maml:description>
        <maml:para>Use ADSI to lookup info about IdentityReferences from Authorization Rule Collections that came from Discretionary Access Control Lists</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Based on the IdentityReference proprety of each Access Control Entry: Resolve SID to NT account name and vise-versa Resolve well-known SIDs Resolve generic defaults like 'NT AUTHORITY' and 'BUILTIN' to the applicable computer or domain name Add these properties (IdentityReferenceSID,IdentityReferenceName,IdentityReferenceResolved) to the object and return it</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Resolve-Ace</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>InputObject</maml:name>
          <maml:description>
            <maml:para>Authorization Rule Collection of Access Control Entries from Discretionary Access Control Lists</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Management.Automation.PSObject[]</command:parameterValue>
          <dev:type>
            <maml:name>System.Management.Automation.PSObject[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>KnownServers</maml:name>
          <maml:description>
            <maml:para>Dictionary to cache known servers to avoid redundant lookups Defaults to an empty thread-safe hashtable</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>[hashtable]::Synchronized(@{})</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>DirectoryEntryCache</maml:name>
          <maml:description>
            <maml:para>Dictionary to cache directory entries to avoid redundant lookups</maml:para>
            <maml:para>Defaults to an empty thread-safe hashtable</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>Win32AccountsBySID</maml:name>
          <maml:description>
            <maml:para>{{ Fill Win32AccountsBySID Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
          <maml:name>Win32AccountsByCaption</maml:name>
          <maml:description>
            <maml:para>{{ Fill Win32AccountsByCaption Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>DirectoryEntryCache</maml:name>
        <maml:description>
          <maml:para>Dictionary to cache directory entries to avoid redundant lookups</maml:para>
          <maml:para>Defaults to an empty thread-safe hashtable</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>InputObject</maml:name>
        <maml:description>
          <maml:para>Authorization Rule Collection of Access Control Entries from Discretionary Access Control Lists</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Management.Automation.PSObject[]</command:parameterValue>
        <dev:type>
          <maml:name>System.Management.Automation.PSObject[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>KnownServers</maml:name>
        <maml:description>
          <maml:para>Dictionary to cache known servers to avoid redundant lookups Defaults to an empty thread-safe hashtable</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>[hashtable]::Synchronized(@{})</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
        <maml:name>Win32AccountsByCaption</maml:name>
        <maml:description>
          <maml:para>{{ Fill Win32AccountsByCaption Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>Win32AccountsBySID</maml:name>
        <maml:description>
          <maml:para>{{ Fill Win32AccountsBySID Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>[System.Security.AccessControl.AuthorizationRuleCollection]$InputObject</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[PSCustomObject] Original object plus IdentityReferenceSID,IdentityReferenceName,IdentityReferenceResolved, and AdsiProvider properties</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para>Dependencies: Get-DirectoryEntry Add-SidInfo Get-TrustedDomainSidNameMap Find-AdsiProvider</maml:para>
        <maml:para>if ($FolderPath.Length -gt 255) { $FolderPath = "\\?\$FolderPath" }</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-Acl |
Expand-Acl |
Resolve-Ace</dev:code>
        <dev:remarks>
          <maml:para>Use Get-Acl from the Microsoft.PowerShell.Security module as the source of the access list This works in either Windows Powershell or in Powershell Get-Acl does not support long paths (&gt;256 characters) That was why I originally used the .Net Framework method</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Get-FolderAce -LiteralPath C:\Test -IncludeInherited |
Resolve-Ace</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 3 --------------------------</maml:title>
        <dev:code>[System.String]$FolderPath = 'C:\Test'
[System.IO.DirectoryInfo]$DirectoryInfo = Get-Item -LiteralPath $FolderPath
$Sections = [System.Security.AccessControl.AccessControlSections]::Access -bor [System.Security.AccessControl.AccessControlSections]::Owner
$FileSecurity = [System.Security.AccessControl.FileSecurity]::new($DirectoryInfo,$Sections)
$IncludeExplicitRules = $true
$IncludeInheritedRules = $true
$AccountType = [System.Security.Principal.SecurityIdentifier]
$FileSecurity.GetAccessRules($IncludeExplicitRules,$IncludeInheritedRules,$AccountType) |
Resolve-Ace</dev:code>
        <dev:remarks>
          <maml:para>This uses .Net Core as the source of the access list It uses the GetAccessRules method on the [System.Security.AccessControl.FileSecurity] class The targetType parameter of the method is used to specify that the accounts in the ACL are returned as SIDs</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 4 --------------------------</maml:title>
        <dev:code>[System.String]$FolderPath = 'C:\Test'
[System.IO.DirectoryInfo]$DirectoryInfo = Get-Item -LiteralPath $FolderPath
$Sections = [System.Security.AccessControl.AccessControlSections]::Access -bor
[System.Security.AccessControl.AccessControlSections]::Owner -bor
[System.Security.AccessControl.AccessControlSections]::Group
$DirectorySecurity = [System.Security.AccessControl.DirectorySecurity]::new($DirectoryInfo,$Sections)
$IncludeExplicitRules = $true
$IncludeInheritedRules = $true
$AccountType = [System.Security.Principal.NTAccount]
$FileSecurity.GetAccessRules($IncludeExplicitRules,$IncludeInheritedRules,$AccountType) |
Resolve-Ace</dev:code>
        <dev:remarks>
          <maml:para>This uses .Net Core as the source of the access list It uses the GetAccessRules method on the [System.Security.AccessControl.FileSecurity] class The targetType parameter of the method is used to specify that the accounts in the ACL are returned as NT account names (DOMAIN\User)</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 5 --------------------------</maml:title>
        <dev:code>[System.String]$FolderPath = 'C:\Test'
[System.IO.DirectoryInfo]$DirectoryInfo = Get-Item -LiteralPath $FolderPath
[System.Security.AccessControl.DirectorySecurity]$DirectorySecurity = $DirectoryInfo.GetAccessControl('Access')
[System.Security.AccessControl.AuthorizationRuleCollection]$AuthRules = $DirectorySecurity.Access
$AuthRules | Resolve-Ace</dev:code>
        <dev:remarks>
          <maml:para>Use the .Net Framework (or legacy .Net Core up to 2.2) as the source of the access list Only works in Windows PowerShell Those versions of .Net had a GetAccessControl method on the [System.IO.DirectoryInfo] class This method is removed in modern versions of .Net Core</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 6 --------------------------</maml:title>
        <dev:code>[System.String]$FolderPath = 'C:\Test'
[System.IO.DirectoryInfo]$DirectoryInfo = Get-Item -LiteralPath $FolderPath
$Sections = [System.Security.AccessControl.AccessControlSections]::Access -bor [System.Security.AccessControl.AccessControlSections]::Owner
$FileSecurity = [System.IO.FileSystemAclExtensions]::GetAccessControl($DirectoryInfo,$Sections)</dev:code>
        <dev:remarks>
          <maml:para>The [System.IO.FileSystemAclExtensions] class is a Windows-specific implementation It provides no known benefit over the cross-platform equivalent [System.Security.AccessControl.FileSecurity]</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Resolve-IdentityReference</command:name>
      <command:verb>Resolve</command:verb>
      <command:noun>IdentityReference</command:noun>
      <maml:description>
        <maml:para>Use ADSI to lookup info about IdentityReferences from Access Control Entries that came from Discretionary Access Control Lists</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Based on the IdentityReference proprety of each Access Control Entry: Resolve SID to NT account name and vise-versa Resolve well-known SIDs Resolve generic defaults like 'NT AUTHORITY' and 'BUILTIN' to the applicable computer or domain name</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Resolve-IdentityReference</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>IdentityReference</maml:name>
          <maml:description>
            <maml:para>IdentityReference from an Access Control Entry Expecting either a SID (S-1-5-18) or an NT account name (CONTOSO\User)</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
          <dev:type>
            <maml:name>System.String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>ServerName</maml:name>
          <maml:description>
            <maml:para>Name of the directory server to use to resolve the IdentityReference</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
          <dev:type>
            <maml:name>System.String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>AdsiServer</maml:name>
          <maml:description>
            <maml:para>Object from Get-AdsiServer representing the directory server and its attributes</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Management.Automation.PSObject</command:parameterValue>
          <dev:type>
            <maml:name>System.Management.Automation.PSObject</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>KnownDomains</maml:name>
          <maml:description>
            <maml:para>{{ Fill KnownDomains Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>[hashtable]::Synchronized(@{})</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
          <maml:name>DirectoryEntryCache</maml:name>
          <maml:description>
            <maml:para>Dictionary to cache directory entries to avoid redundant lookups</maml:para>
            <maml:para>Defaults to an empty thread-safe hashtable</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
          <maml:name>Win32AccountsBySID</maml:name>
          <maml:description>
            <maml:para>{{ Fill Win32AccountsBySID Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="7" aliases="none">
          <maml:name>Win32AccountsByCaption</maml:name>
          <maml:description>
            <maml:para>{{ Fill Win32AccountsByCaption Description }}</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>AdsiServer</maml:name>
        <maml:description>
          <maml:para>Object from Get-AdsiServer representing the directory server and its attributes</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Management.Automation.PSObject</command:parameterValue>
        <dev:type>
          <maml:name>System.Management.Automation.PSObject</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
        <maml:name>DirectoryEntryCache</maml:name>
        <maml:description>
          <maml:para>Dictionary to cache directory entries to avoid redundant lookups</maml:para>
          <maml:para>Defaults to an empty thread-safe hashtable</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>IdentityReference</maml:name>
        <maml:description>
          <maml:para>IdentityReference from an Access Control Entry Expecting either a SID (S-1-5-18) or an NT account name (CONTOSO\User)</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
        <dev:type>
          <maml:name>System.String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>KnownDomains</maml:name>
        <maml:description>
          <maml:para>{{ Fill KnownDomains Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>[hashtable]::Synchronized(@{})</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>ServerName</maml:name>
        <maml:description>
          <maml:para>Name of the directory server to use to resolve the IdentityReference</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
        <dev:type>
          <maml:name>System.String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="7" aliases="none">
        <maml:name>Win32AccountsByCaption</maml:name>
        <maml:description>
          <maml:para>{{ Fill Win32AccountsByCaption Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
        <maml:name>Win32AccountsBySID</maml:name>
        <maml:description>
          <maml:para>{{ Fill Win32AccountsBySID Description }}</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None. Pipeline input is not accepted.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[PSCustomObject] with UnresolvedIdentityReference and SIDString properties (each strings)</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Resolve-IdentityReference -IdentityReference 'BUILTIN\Administrator' -ServerName 'localhost' -AdsiServer (Get-AdsiServer 'localhost')</dev:code>
        <dev:remarks>
          <maml:para>Get information about the local Administrator account</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Search-Directory</command:name>
      <command:verb>Search</command:verb>
      <command:noun>Directory</command:noun>
      <maml:description>
        <maml:para>Use Active Directory Service Interfaces to search an LDAP directory</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Find directory entries using the LDAP provider for ADSI (the WinNT provider does not support searching) Provides a wrapper around the [System.DirectoryServices.DirectorySearcher] class</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Search-Directory</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>DirectoryPath</maml:name>
          <maml:description>
            <maml:para>Path to the directory object to retrieve Defaults to the root of the current domain</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
          <dev:type>
            <maml:name>System.String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>(([adsisearcher]'').SearchRoot.Path)</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>Filter</maml:name>
          <maml:description>
            <maml:para>Filter for the LDAP search</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
          <dev:type>
            <maml:name>System.String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>PageSize</maml:name>
          <maml:description>
            <maml:para>Number of records per page of results</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Int32</command:parameterValue>
          <dev:type>
            <maml:name>System.Int32</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>1000</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
          <maml:name>PropertiesToLoad</maml:name>
          <maml:description>
            <maml:para>Additional properties to return</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
          <dev:type>
            <maml:name>System.String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
          <maml:name>Credential</maml:name>
          <maml:description>
            <maml:para>Credentials to use</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Management.Automation.PSCredential</command:parameterValue>
          <dev:type>
            <maml:name>System.Management.Automation.PSCredential</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
          <maml:name>SearchScope</maml:name>
          <maml:description>
            <maml:para>Scope of the search</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
          <dev:type>
            <maml:name>System.String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>Subtree</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="7" aliases="none">
          <maml:name>DirectoryEntryCache</maml:name>
          <maml:description>
            <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
          </maml:description>
          <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
          <dev:type>
            <maml:name>System.Collections.Hashtable</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="5" aliases="none">
        <maml:name>Credential</maml:name>
        <maml:description>
          <maml:para>Credentials to use</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Management.Automation.PSCredential</command:parameterValue>
        <dev:type>
          <maml:name>System.Management.Automation.PSCredential</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="7" aliases="none">
        <maml:name>DirectoryEntryCache</maml:name>
        <maml:description>
          <maml:para>Hashtable containing cached directory entries so they don't have to be retrieved from the directory again Uses a thread-safe hashtable by default</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Collections.Hashtable</command:parameterValue>
        <dev:type>
          <maml:name>System.Collections.Hashtable</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>([hashtable]::Synchronized(@{}))</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>DirectoryPath</maml:name>
        <maml:description>
          <maml:para>Path to the directory object to retrieve Defaults to the root of the current domain</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
        <dev:type>
          <maml:name>System.String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>(([adsisearcher]'').SearchRoot.Path)</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>Filter</maml:name>
        <maml:description>
          <maml:para>Filter for the LDAP search</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
        <dev:type>
          <maml:name>System.String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>PageSize</maml:name>
        <maml:description>
          <maml:para>Number of records per page of results</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.Int32</command:parameterValue>
        <dev:type>
          <maml:name>System.Int32</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>1000</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="4" aliases="none">
        <maml:name>PropertiesToLoad</maml:name>
        <maml:description>
          <maml:para>Additional properties to return</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String[]</command:parameterValue>
        <dev:type>
          <maml:name>System.String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="6" aliases="none">
        <maml:name>SearchScope</maml:name>
        <maml:description>
          <maml:para>Scope of the search</maml:para>
        </maml:description>
        <command:parameterValue required="true" variableLength="false">System.String</command:parameterValue>
        <dev:type>
          <maml:name>System.String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>Subtree</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes>
      <command:inputType>
        <dev:type>
          <maml:name>None. Pipeline input is not accepted.</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:inputType>
    </command:inputTypes>
    <command:returnValues>
      <command:returnValue>
        <dev:type>
          <maml:name>[System.DirectoryServices.DirectoryEntry]</maml:name>
        </dev:type>
        <maml:description>
          <maml:para></maml:para>
        </maml:description>
      </command:returnValue>
    </command:returnValues>
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Search-Directory -Filter ''</dev:code>
        <dev:remarks>
          <maml:para>As the current user on a domain-joined computer, bind to the current domain and search for all directory entries matching the LDAP filter</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks />
  </command:command>
</helpItems>