Я пытаюсь автоматизировать копирование данных профиля из одной учетной записи в другую. Эта другая учетная запись пользователя создается в сценарии 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?

2 ответа2

2

Я хотел бы найти ключ reg для папки профиля пользователя, которую вы хотите скопировать, чтобы устранить неоднозначность.

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

Что касается создания домашнего каталога, это сложная часть. Если это совершенно новый пользователь, вы можете попробовать инструмент USMT от Microsoft, в частности, loadstate exe, и создать учетную запись таким образом. Я не использовал его таким образом, но моей первой попыткой было бы создать профиль на каком-нибудь компьютере, а затем создать резервную копию с помощью scanstate. Затем вы можете развернуть его на любом компьютере с loadstate, указав имя новой учетной записи в качестве параметра.

Функция loadstate автоматически создает профиль пользователя (включая папку профиля, в которую вы хотите скопировать файлы) и восстанавливает файлы, для которых было выполнено резервное копирование (что минимально, если вы создаете резервную копию пустого или нового профиля), но важно Часть в том, что вы получите папку профиля, созданную.

USMT доступен для загрузки с MS и также поставляется с Windows 8 ADK.

0

Вам просто нужно запустить команду от имени нового пользователя, чтобы инициализировать папку профиля. Написал функцию, которая возвращает путь к папке профиля пользователя.

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
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .