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
}