Obtenga otro directorio de inicio de usuarios locales

Obtenga otro directorio de inicio de usuarios locales

Estoy intentando automatizar la copia de datos de perfil de una cuenta de usuario a otra. Esta otra cuenta de usuario se crea en un script de PowerShell desde una cuenta de administrador. Estoy copiando la plantilla

Este script debe ejecutarse en una máquina con Windows 8. Pensé que podría asumir que el PERFIL DE USUARIO sería [HomeDrive]\Users[AccountName]\ pero encontré 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 extensiones de Powershell?

Respuesta1

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 crear el directorio de inicio, esa es la parte complicada. Si se trata de un usuario completamente nuevo, puedeintentarLa herramienta USMT de Microsoft, específicamente laestado de cargaexe y cree 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 del perfil en la que desea copiar los archivos) y restaura los archivos de los que se realizó una copia de seguridad (lo cual es mínimo si realiza una copia de seguridad de un perfil vacío o nuevo), pero lo importante La parte es que se crea una carpeta de perfil.

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

Respuesta2

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 de los usuarios.

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
}

información relacionada