Obtenha outro diretório inicial de usuários locais

0

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

Este script deve ser executado em uma máquina com Windows 8. Eu pensei que eu poderia ser capaz de assumir o USERPROFILE seria [HomeDrive] \ Users [AccountName] \ mas eu bati um caso em que é realmente [HomeDrive] \ Users [AccountName]. [MachineName].

Estou usando o snippet a seguir para criar a conta de 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 as extensões do Powershell?

    
por Simon Campbell 28.02.2013 / 03:38

2 respostas

2

Eu procuraria a chave reg para a pasta do 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ê pode tentar a ferramenta USMT da Microsoft, especificamente o loadstate exe, e crie a conta dessa maneira. Eu não usei desta forma, mas minha primeira tentativa seria criar um perfil em algum computador, em seguida, fazer backup com scanstate. Em seguida, você pode implantá-lo em qualquer máquina com loadstate, especificando o novo nome da conta como um parâmetro.

O que o 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 (que é mínimo se você fizer backup de um perfil vazio ou novo) mas a parte importante é que você cria uma pasta de perfil.

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

    
por 01.03.2013 / 14:40
0

Você só precisa executar um comando como o novo usuário para inicializar uma pasta de perfil. Escreveu uma função que retorna o caminho da pasta do 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
}
    
por 21.04.2013 / 23:53