다른 로컬 사용자 홈 디렉터리 가져오기

다른 로컬 사용자 홈 디렉터리 가져오기

한 사용자 계정에서 다른 사용자 계정으로 프로필 데이터를 자동으로 복사하려고 합니다. 이 다른 사용자 계정은 관리자 계정의 PowerShell 스크립트에서 생성됩니다. 템플릿을 복사하고 있습니다.

이 스크립트는 Windows 8 시스템에서 실행됩니다. USERPROFILE이 [HomeDrive]\Users[AccountName]\이라고 가정할 수 있을 것이라고 생각했지만 실제로는 [HomeDrive]\Users[AccountName].[MachineName]인 경우가 있었습니다.

나는 사용자 계정을 생성하기 위해 다음 스니펫을 사용하고 있습니다.

function CreateLocalUser([string] $userName, [string] $password, [string] $description)
{
    $computer = "localhost"

    $objOu = [ADSI]"WinNT://$computer"
    $objUser = $objOU.Create("User", $userName)

    $objUser.SetPassword($password)
    $objUser.SetInfo()

    $objUser.Description = $description
    $objUser.SetInfo()

    return $objUser
}

Powershell 확장을 사용하지 않고 생성된 사용자 홈 디렉터리를 어떻게 얻을 수 있나요?

답변1

모호함을 없애기 위해 복사하려는 사용자 프로필 폴더의 등록 키를 찾아보겠습니다.

HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\[Users SID]\Profile Image Path

홈 디렉토리를 생성하는 것은 까다로운 부분입니다. 완전히 새로운 사용자인 경우 다음을 수행할 수 있습니다.노력하다Microsoft의 USMT 도구, 특히로드 상태exe를 실행하고 그런 식으로 계정을 만듭니다. 나는 이 방법을 사용하지 않았지만 첫 번째 시도는 일부 컴퓨터에서 프로필을 만든 다음 scanstate로 백업하는 것입니다. 다음으로 새 계정 이름을 매개변수로 지정하여 loadstate가 있는 모든 머신에 배포할 수 있습니다.

loadstate가 수행하는 작업은 사용자 프로필(파일을 복사할 프로필 폴더 포함)을 자동으로 생성하고 백업된 파일을 복원하는 것입니다(빈 프로필이나 새 프로필을 백업하는 경우 최소 수준). 부분은 프로필 폴더가 생성된다는 것입니다.

USMT는 MS에서 다운로드할 수 있으며 Windows 8 ADK와 함께 제공됩니다.

답변2

프로필 폴더를 초기화하려면 새 사용자로 명령을 실행하기만 하면 됩니다. 사용자 프로필 폴더 경로를 반환하는 함수를 작성했습니다.

function New-UserProfileFolder ([string] $username, [string] $password) {

    $sec_password = ConvertTo-SecureString $password -AsPlainText -Force
    $credential = New-Object System.Management.Automation.PSCredential -ArgumentList $username, $sec_password

    # Run command to create profile folder
    Start-Process cmd /c -WindowStyle Hidden -Wait -Credential $credential -ErrorAction SilentlyContinue

    # Get information from WMI
    $user = Get-WmiObject -Namespace root/cimv2 -Class win32_useraccount -Filter "LocalAccount=True AND Name='$username'"
    $userprofile = Get-WmiObject -Namespace root/cimv2 -Class win32_userprofile -Filter "SID='$($user.sid)'"

    $userprofile.localpath
}

관련 정보