Holen Sie sich ein anderes lokales Benutzer-Home-Verzeichnis

Holen Sie sich ein anderes lokales Benutzer-Home-Verzeichnis

Ich versuche, das Kopieren von Profildaten von einem Benutzerkonto auf ein anderes zu automatisieren. Dieses andere Benutzerkonto wird in einem PowerShell-Skript aus einem Administratorkonto erstellt. Ich kopiere die Vorlage

Dieses Skript soll auf einem Windows 8-Computer ausgeführt werden. Ich dachte, ich könnte davon ausgehen, dass das USERPROFILE [HomeDrive]\Users[AccountName]\ wäre, aber ich bin auf einen Fall gestoßen, in dem es tatsächlich [HomeDrive]\Users[AccountName].[MachineName] ist.

Ich verwende das folgende Snippet, um das Benutzerkonto zu erstellen,

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
}

Wie kann ich das erstellte Benutzer-Home-Verzeichnis abrufen, ohne Powershell-Erweiterungen zu verwenden?

Antwort1

Um Unklarheiten zu vermeiden, würde ich den Registrierungsschlüssel für den Benutzerprofilordner nachschlagen, den Sie kopieren möchten.

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

Das Erstellen des Home-Verzeichnisses ist der schwierige Teil. Wenn dies ein völlig neuer Benutzer ist, können SieversuchenDas USMT-Tool von Microsoft, insbesondere dasLadezustandexe und erstellen Sie das Konto auf diese Weise. Ich habe es nicht auf diese Weise verwendet, aber mein erster Versuch wäre, ein Profil auf einem Computer zu erstellen und es dann mit scanstate zu sichern. Als Nächstes können Sie es mit loadstate auf jedem Computer bereitstellen und den neuen Kontonamen als Parameter angeben.

Loadstate erstellt automatisch das Benutzerprofil (einschließlich des Profilordners, in den Sie die Dateien kopieren möchten) und stellt gesicherte Dateien wieder her (was minimal ist, wenn Sie ein leeres oder neues Profil sichern). Wichtig ist jedoch, dass ein Profilordner erstellt wird.

USMT steht bei MS als Download zur Verfügung und ist auch im Windows 8 ADK enthalten.

Antwort2

Sie müssen lediglich als neuer Benutzer einen Befehl ausführen, um einen Profilordner zu initialisieren. Habe eine Funktion geschrieben, die den Pfad des Profilordners des Benutzers zurückgibt.

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
}

verwandte Informationen