보고 할 XP Pro 워크 스테이션이 있는데 입니다. "도메인 컨트롤러가 다운되었거나 사용할 수 없기 때문에 Windows가 도메인에 연결할 수 없습니다 또는 컴퓨터 계정을 찾을 수 없기 때문에 나중에 다시 시도하십시오.이 메시지가 계속 나타나면 시스템 관리자에게 도움을 요청하십시오. " 도메인 자격 증명으로 로그인 할 때 이 수동으로 수정하려면 로컬 관리자 계정으로 로그인하고 작업 그룹에 놓은 다음 도메인에 다시 추가하기 만하면됩니다. 그러나이 프로세스는 내 작업에서이 문제가 다소 자주 발생하는 것을 고려하면 상당한 시간이 걸릴 수 있습니다. 내가 뭘 하려는지 프로그래밍 방식으로 떨어지는/rejoining 프로세스를 자동화하는 것입니다. 다음 코드는 작동하지만 현재 컴퓨터가 도메인이나 작업 그룹에 올바르게 있고 limbo가 아닌 경우에만 작동합니다. "Windows가 도메인에 연결할 수 없습니다."라는 오류 메시지가 나타날 때 WMI에 액세스 할 수 없습니다. 오류 메시지
Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144
Const WbemAuthenticationLevelPktPrivacy = 6
'On Error Resume Next
SystemName = "SystemName"
strNamespace = "root\cimv2"
ComputerBLogin = "LoginB"
ComputerBPass = "PassB"
ComputerALogin = "LoginA"
ComputerAPass = "PassA"
DomainName = "domain.com"
OU = "OU=desiredou,DC=domain,DC=com"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\" & SystemName & "\root\cimv2")
If Err.Number <> 0 Then
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer(SystemName, strNamespace, ComputerBLogin, ComputerBPass)
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy
Err.Clear
End IF
Set colComputers = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objComputer in colComputers
Return = objComputer.UnJoinDomainOrWorkGroup(NULL, NULL)
Return = objComputer.JoinDomainOrWorkGroup("WORKGROUP", NULL, NULL)
If Err.Number <> 0 Then
Set WshShell = CreateObject("WScript.Shell")
message = WshShell.Popup (SystemName & " could not be dropped to the workgroup!" & vbCr &_
"Error: " & Err.Description,, "Title", 0 + 16)
Else
Set WshShell = CreateObject("WScript.Shell")
message = WshShell.Popup (SystemName & " was successfully dropped to the WORKGROUP!",, "Title", 0 + 64)
End If
Next
For Each objComputer in colComputers
ReturnValue = objComputer.JoinDomainOrWorkGroup(DomainName, ComputerAPass, ComputerALogin, OU, JOIN_DOMAIN + ACCT_CREATE)
If Err.Number <> 0 Then
Set WshShell = CreateObject("WScript.Shell")
message = WshShell.Popup ("Unable to join " & SystemName & " to the domain! Please join manually.",, "Title", 0 + 16)
Else
Set WshShell = CreateObject("WScript.Shell")
message = WshShell.Popup ("Domain joining was successful!",, "Title", 0 + 64)
End If
Next
스크립트가 라인 24 명중
:와Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\" & SystemName & "\root\cimv2")
그것은 오류 "원격 서버 컴퓨터가 없거나 사용할 수 없습니다 : 'GetObject를'". 이 행은 컴퓨터가 도메인에 올바르게있는 경우 정상적으로 작동합니다. AD 개체가 존재합니다. 내가 코딩 한이 오류는 29 행에 로컬 관리자 자격 증명을 사용하여 컴퓨터에 로그인 할 경우 "액세스 거부 SWbemLocator가."
는Set objWMIService = objwbemLocator.ConnectServer(SystemName, strNamespace, ComputerBLogin, ComputerBPass)
함께 오류가 발생하지 않는다고
그래서 두 가지 방법을 사용하면 컴퓨터가이 절벽에있을 때 WMI에 액세스 할 수있는 방법이 없습니다. 내 연구에서는 마치 "워크 스테이션과 도메인 간의 트러스트 관계가 실패했습니다"라고 생각되지만 나에게 로컬 관리자 자격 증명으로 로그인 할 수없는 이유는 설명하지 않습니다.
NETDOM에 의지하고 싶지 않지만 어쨌든 시도했습니다. 실패한 신뢰 관계에 대해서도 오류가 발생합니다.
그래서 제 질문은 다음과 같습니다)이 오류 메시지가 존재 프로그래밍 작업 그룹에 워크 스테이션을 삭제하고이 도메인에 다시 추가 할 수있는 방법이
?
B) 프로그래밍 방식으로 워크 스테이션과 도메인 간의 트러스트 관계를 복구합니다 (실제로 문제가있는 경우).
C)이 오류 메시지가 나타나면 관리자 자격 증명으로 워크 스테이션에 로그인하십시오.
잠재적 인 도움이 필요한 모든 분들께 미리 감사드립니다. 더 자세한 정보가 필요하면 알려주십시오.
누구나? 대답은 "수동으로 떨어 뜨리고 다시 참여하는 것 외에는 다른 방법으로는 해결할 수 없습니다"라고해도 괜찮습니다. 누군가가 이것에 대한 통찰력을 갖기를 바랄뿐입니다. – VoidnessMD