Obtener otro directorio de inicio de usuarios locales

0

Estoy tratando de automatizar la copia de datos de perfil de una cuenta de usuario a otra. Esta otra cuenta de usuario se está creando en un script de PowerShell desde una cuenta de administrador. Estoy copiando sobre la plantilla

Este script se debe ejecutar en una máquina con Windows 8. Pensé que podría asumir que el PERFIL DE USUARIO sería [HomeDrive] \ Users [AccountName] \ pero llegué a un caso en el que en realidad es [HomeDrive] \ Users [AccountName]. [MachineName].

Estoy usando el siguiente fragmento para crear la cuenta de usuario,

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
}

¿Cómo puedo obtener el directorio de inicio de los usuarios creados sin usar las extensiones de Powershell?

Simon Campbell
fuente

Respuestas:

2

Buscaría la clave de registro de la carpeta de perfil del usuario que desea copiar para eliminar la ambigüedad.

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

En cuanto a la creación del directorio de inicio, esa es la parte difícil. Si este es un usuario completamente nuevo, puede probar la herramienta USMT de Microsoft, específicamente el exe de estado de carga , y crear la cuenta de esa manera. No lo he usado de esta manera, pero mi primer intento sería crear un perfil en alguna computadora y luego hacer una copia de seguridad con scanstate. A continuación, puede implementarlo en cualquier máquina con estado de carga, especificando el nuevo nombre de cuenta como parámetro.

Lo que hace loadstate es crear automáticamente el perfil del usuario (incluida la carpeta de perfil en la que desea copiar los archivos), y restaura los archivos que se respaldaron (lo cual es mínimo si realiza una copia de seguridad de un perfil vacío o nuevo), pero lo importante parte es que se crea una carpeta de perfil.

USMT está disponible como descarga desde MS y también viene con Windows 8 ADK.

MDMoore313
fuente
0

Solo necesita ejecutar un comando como nuevo usuario para inicializar una carpeta de perfil. Escribió una función que devuelve la ruta de la carpeta del perfil del usuario.

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
}
MFT
fuente