2013-08-14 1 views
1

SBS 2003 Active Directory에서 2008 R2로 마이그레이션하면서 클라우드로 이전하는 중입니다.PowerShell의 Net 사용자

새 사용자를 구성하고 사용자가 암호를 재설정하지 못하는 것으로 나타났습니다.

My Server Admin에서 네트워크 사용자를 사용하는 방법을 보여주었습니다.

일부 계정에서 정보를 얻을 수 있다는 것을 알게되었습니다. 100 개가 넘는 계정을 처리 할 때 PowerShell을 사용해 보았습니다.

이 게시물 (Use powershell to look up 'net user' on other domains?)에서 Lorenzo는 Get-ADUser를 사용하도록 권장하며 (다른 도메인에서 폴링하는 경우에도 적용됩니다). PowerShell 프롬프트에서 Get-ADUser를 실행하면 commandlet이 인식되지 않는다는 메시지가 나타납니다.

텍스트 파일에서 사용자 ID를 읽고 출력을 로그 파일로 보내서 추가 분석을 위해 서버 관리자에게 보낼 수 있습니다. 스크립트가 현재 실행

# Get our list of user names from the local staff.txt file 
$users = get-content 'C:\Scripts\staff.txt' 

# Create log file of output: 
$LogTime = Get-Date -Format 'MM-dd-yyyy_hh-mm-ss' 
$CompPath = "C:\Scripts\" 
$CompLog = $CompPath + "NetUserInfo" + $LogTime + ".txt" 
New-Item -path $CompLog -type File 

foreach ($user in $users) { 

#Testing user: 
"Testing user: $user" | out-file $CompLog -Append 

# Obtain user information using net user: 
net user $user /domain >> $CompLog 

# Pause to let system gather information: 
Start-Sleep -Second 15 

} 

으로 내 로그 파일이 응답 "다음에 두 개 또는 세 개의 사용자 이름을 갖습니다 : 여기

지금까지 (내가 PowerShell을 완전히 새로운 오전 참고하시기 바랍니다) 내 코드입니다 요청은 도메인 (도메인)의 도메인 컨트롤러에서 처리됩니다. "

net 사용자가 CMD에서"시스템 오류 5가 발생했습니다. 액세스가 거부되었습니다. " 이것은 출력 파일에 기록되지 않습니다. IF net 사용자가 CMD에서 사용자 정보를 반환하면 출력 파일에 기록됩니다. 현재 몇 명의 사용자에 대해서만 출력을 받고 있지만 CMD에서 명령을 실행할 때 최소한 10 개의 정보를 검색 할 수 있습니다.

첫 번째 생각은 net 사용자 명령이 완료 될 때까지 기다릴 필요가 있었기 때문에 (즉 Start-Sleep 명령) 출력에 아무런 영향을주지 않았습니다.

도움을 주시면 감사하겠습니다.

+0

사용'은 Get-ADUser'가 PowerShell에서 사용자 정보를 얻을 : 또한 조금 더가 (표준 오류 스트림)의 변화

net user $user /domain >> $CompLog 

이 그것을 설명

net user $user /domain 2>&1 $CompLog 

로 STDERR을 리디렉션하려면 'net'을 호출하는 대신에. 데이터를보다 잘 제어하고 데이터를보다 효율적으로 사용할 수 있습니다. – alroc

답변

0

죄송합니다. 의견을 남기려면 평판이 충분하지 않습니다.

Powershell에서 프로그램을 실행할 때 (예 : net user... 또는 ping) 정상적인 명령 프롬프트 (cmd)에서와 똑같이 실행되어야합니다.

Powershell이나 명령 프롬프트에서 똑같은 것을 (효과적으로) 실행하면 결과가 달라집니다. 그게 맞습니까?

스크립트를 작성하는 데 ISE를 사용하고 있습니까? 그렇다면 중단 점을 설정하여 스크립트를 일시 중지하고 변수가 무엇인지 확인할 수 있습니다. 변수 $user은 사용자가 생각하는 변수를 보유하고 있지 않거나 그 값이 도메인 사용자 계정의 이름과 일치하지 않을 수 있습니다.

편집 :

무엇 PowerShell에서 대화식으로 net user ... 명령을 실행할 때 발생 (스크립트로 예를 들면 아니지만, 수동)? 오류가 있습니까? 그렇다면 오류는 무엇이라고 말합니까?

추가 관련 재료 :

명령이 순서대로 실행과 같이 시작-수면을 필요가 없습니다, 다음 행이 완료된에서 이전까지 실행하지 않아야합니다.

또한 Powershell의 어떤 버전을 사용하고 있습니까?

은 Get-ADUser cmdlet을 버전 3을 (내가 믿는)가 필요하며 또한 Active Directory 모듈을 가져올 필요가있다 (당신은 $host.version.Major을 실행하여 확인할 수 있습니다).