我在让这段代码在 TS 环境中工作时遇到了很多麻烦。
在 Windows 环境中,它工作得很好。通过谷歌搜索此代码,您会发现几乎所有变体在 Windows 中都可以正常工作。但是,在任务序列中,这些变体只会产生不同的错误消息,说明计算机无法移动的原因。
- 未指定的错误
- 指定的域不存在或无法联系
- 未设置为对象的对象实例
psbase.MoveTo()
当我们进行方法调用时,我觉得有些事情正在发生。到那时,它可以打印出看起来像一个合理对象的东西。换句话说,它们不是 null 之类的。
然后psbase.MoveTo()
说没有。
示例代码。
$logFile = "MoveComputerLog.txt"
# Domain Credentials
$account = "domain\osdaccount"
$password = "thepassword"
function logMessage {
param ([string]$logstring)
Write-Host $logstring
Add-content $logFile -value $logstring
}
$computerName = "COMPUTERNAME"
logMessage "computerName: $computerName"
$root = "LDAP://sweet.domain.com"
$domain = New-Object System.DirectoryServices.DirectoryEntry($root, $account, $password)
$search = New-Object System.DirectoryServices.DirectorySearcher($domain)
$search.filter = "(&(objectClass=computer)(name=$computerName))"
$result = $search.findall()
$computerDN = $result.Properties.Item("DistinguishedName")
logMessage "DN: $computerDn"
$computer = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$computerDN", $account, $password)
logMessage "Computer: $computer"
$destination = "LDAP://ou=here,ou=goes,ou=it,dc=sweet,dc=domain,dc=com"
$ou = New-Object System.DirectoryServices.DirectoryEntry($destination, $account, $password)
try {
# "The specified domain couldn't be connected or doesn't exist."
$computer.psbase.MoveTo($ou.Path)
} catch {
Write-Host "Encountered error while moving $computerName"
logMessage $error[0]
}