Powershell OU d'un compte ordinateur dans Active Directory

[Fermé]
Signaler
-
Messages postés
71
Date d'inscription
mercredi 3 juin 2015
Statut
Membre
Dernière intervention
12 janvier 2018
-
Bonjour,

J'ai besoin de récupérer l'OU d'un compte ordinateur dans l'Active Directory en PowerShell (Chose à laquelle je ne connais absolument rien)

J'ai réussi à trouver un script sur le centre de script microsoft, mais j'ai une erreur lors de l'exécution, voici le code avec les commentaires



<#
.SYNOPSIS
This script will find the OU of the current computer or a specified computer or computers.

.DESCRIPTION
This script will use the System.DirectoryServices functionality to retrieve the OU for
the current computer or a list of computers. This will return a list of objects with
a Name and OU property. If the ValueOnly switch is used, then only the OU of the objects
is returned.

.PARAMETER ComputerName
The name(s) of the computer or computers to retrieve the OUs for. This can be specified as a string
or array. Value from the pipeline is accepted.

.PARAMETER ThisComputer
This parameter does not need to be specified. It is used to differentiate between parameter sets.

.PARAMETER ValueOnly
This switch parameter specifies that only the OU of the computer(s) should be returned.

.EXAMPLE
.\GetComputerOU.ps1 -ValueOnly

This will return the OU of the current computer.

.EXAMPLE
$ComputerList = @("Computer1", "Computer2", "Computer3")
$ComputerList | .\GetComputerOU.ps1

This will return an array of object (Name and OU) of the three computer names specified.
#>
[CmdletBinding()]

param(
[parameter(ParameterSetName = "ComputerName", Mandatory = $true, ValueFromPipeline = $true, Position = 0)]
$ComputerName,
[parameter(ParameterSetName = "ThisComputer")]
[switch]$ThisComputer,
[switch]$ValueOnly
)

begin
{
$rootDse = New-Object System.DirectoryServices.DirectoryEntry("LDAP://RootDSE")
$Domain = $rootDse.DefaultNamingContext
$root = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$Domain")
$ComputerList = @("ET11109")
}

process
{
if ($PSCmdlet.ParameterSetName -ne "ComputerName")
{
$ComputerName = $env:COMPUTERNAME
}

$searcher = New-Object System.DirectoryServices.DirectorySearcher($root)
$searcher.Filter = "(&(objectClass=computer)(name=$ComputerName))"
[System.DirectoryServices.SearchResult]$result = $searcher.FindOne()
if (!$?)
{
return
}
$dn = $result.Properties["distinguishedName"]
$ouResult = $dn.Substring($ComputerName.Length + 4)
if ($ValueOnly)
{
$ouResult
} else {
New-Object PSObject -Property @{"Name" = $ComputerName; "OU" = $ouResult}
}
}



Et maintenant voici l'erreur :



Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Au niveau de D:\POSONA\Desktop\GetComputerOU.ps1 : 65 Caractère : 30
+ $ouResult = $dn.Substring <<<< ($ComputerName.Length + 4)
+ CategoryInfo : InvalidOperation: (Substring:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull



Quelqu'un aurait une idée ?

Merci de votre aide

1 réponse

Messages postés
71
Date d'inscription
mercredi 3 juin 2015
Statut
Membre
Dernière intervention
12 janvier 2018
7
Salut, essaye la commande " Get-ADOU -Identity "" ".
Tu choisis ton OU dans l'AD.