Obtenha outro diretório inicial de usuários locais

Obtenha outro diretório inicial de usuários locais

Estou tentando automatizar a cópia dos dados do perfil de uma conta de usuário para outra. Esta outra conta de usuário está sendo criada em um script do PowerShell a partir de uma conta de administrador. Estou copiando o modelo

Este script deve ser executado em uma máquina Windows 8. Achei que poderia assumir que USERPROFILE seria [HomeDrive]\Users[AccountName]\ mas encontrei um caso em que na verdade é [HomeDrive]\Users[AccountName].[MachineName].

Estou usando o seguinte snippet para criar a conta do usuário,

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
}

Como posso obter o diretório inicial dos usuários criados sem usar extensões Powershell?

Responder1

Eu procuraria a chave reg da pasta de perfil do usuário que você deseja copiar para eliminar a ambigüidade.

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

Quanto à criação do diretório inicial, essa é a parte complicada. se este for um usuário completamente novo, você podetentarA ferramenta USMT da Microsoft, especificamente oestado de cargaexe e crie a conta dessa forma. Não usei dessa forma, mas minha primeira tentativa seria criar um perfil em algum computador e depois fazer backup com scanstate. Em seguida, você pode implantá-lo em qualquer máquina com loadstate, especificando o novo nome da conta como parâmetro.

O que loadstate faz é criar automaticamente o perfil do usuário (incluindo a pasta de perfil para a qual você deseja copiar os arquivos) e restaura os arquivos dos quais foi feito backup (o que é mínimo se você fizer backup de um perfil vazio ou novo), mas o importante parte é que você cria uma pasta de perfil.

O USMT está disponível para download no MS e também vem com o Windows 8 ADK.

Responder2

Você só precisa executar um comando como novo usuário para inicializar uma pasta de perfil. Escreveu uma função que retorna o caminho da pasta de perfil do usuário.

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
}

informação relacionada