Move-Object
Common: Moves an Active Directory object to a different container
param(
[Parameter(Mandatory = $true, ParameterSetName = "Local or Remote DC")]
[Parameter(Mandatory = $true, ParameterSetName = "Remote Jumphost")]
[string]$TargetOUPath,
[Parameter(Mandatory = $true, ParameterSetName = "Local or Remote DC")]
[Parameter(Mandatory = $true, ParameterSetName = "Remote Jumphost")]
[string]$ObjectName,
[Parameter(Mandatory = $true, ParameterSetName = "Remote Jumphost")]
[PSCredential]$DomainAccount,
[Parameter(ParameterSetName = "Local or Remote DC")]
[Parameter(ParameterSetName = "Remote Jumphost")]
[string]$DomainName,
[Parameter(ParameterSetName = "Local or Remote DC")]
[Parameter(ParameterSetName = "Remote Jumphost")]
[ValidateSet('Basic', 'Negotiate')]
[string]$AuthType = "Negotiate"
)
try {
Import-Module ActiveDirectory -ErrorAction Stop
[hashtable]$cmdArgs = @{
'ErrorAction' = 'Stop'
'AuthType' = $AuthType
}
if ($null -ne $DomainAccount) {
$cmdArgs.Add("Credential", $DomainAccount)
}
if ([System.String]::IsNullOrWhiteSpace($DomainName)) {
$cmdArgs.Add("Current", 'LocalComputer')
} else {
$cmdArgs.Add("Identity", $DomainName)
}
$Domain = Get-ADDomain @cmdArgs
$cmdArgs = @{
'ErrorAction' = 'Stop'
'AuthType' = $AuthType
'TargetPath' = $TargetOUPath
'Identity' = $ObjectName
'Server' = $Domain.PDCEmulator
'Confirm' = $false
}
if ($null -ne $DomainAccount) {
$cmdArgs.Add("Credential", $DomainAccount)
}
$res = Move-ADObject @cmdArgs
Write-Output $res
} catch {
Write-Error $_
exit 1
}Specifies the new location for the object.
DistinguishedName or GUID of the Active Directory object. Accepted objects: Group, User, Computer or Service Account.
Active Directory Credential for remote execution on jumphost without CredSSP.
Name of the Active Directory Domain.
Specifies the authentication method to use (Basic or Negotiate).