Jump to content

Auslesen des Profilpfades anderer User


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

ich hänge aktuell an einem Problem:

Ich benötige den Profilepfad ($env:USERPROFILE) von bestimmten Usern.

 

- $env funktioniert nur mit den Credentials des entsprechenden Users

- dir c:\users\ ist ungenau (mehrere Profile eines Users bei defekten)

- Win32_Environment gib nur die System + Benutzervariablen aus (z.B. Temp)

- Registy -> HKEY_USERS speichert wohl nur die aktuell angemeldeten User. Bekomme bei meinen Tests nur bei 2 Maschinen ein Ergebnis und auf beiden bin ich eingeloggt.

 

Gibt es sonst noch ne Stelle wo ich das finde?

Scriptsprache ist Powershell.

 

Viele Grüße

Link zu diesem Kommentar

Hmm.. Ich kenne auch keine Möglichkeit, an die Umgebungsvariablen von nicht angemeldeten Benutzern zu kommen.

 

- Registy -> HKEY_USERS speichert wohl nur die aktuell angemeldeten User. Bekomme bei meinen Tests nur bei 2 Maschinen ein Ergebnis und auf beiden bin ich eingeloggt.

Der Schlüssel unter HKEY_USERS wird nach dem abmelden direkt mit abgemeldet und ist nicht mehr verfügbar. Darunter sieht man nur die aktuell angemeldeten User.

 

- $env funktioniert nur mit den Credentials des entsprechenden Users

Du könntest einen Export ins Anmeldeskript schreiben, falls es so etwas gibt.

 

- dir c:\users\ ist ungenau (mehrere Profile eines Users bei defekten)

Bei mehreren Ordner eines Users, kannst du die aktuellste ntuser.dat nehmen. Das ist dann der Pfad zum aktuellsten Profil. Falls die Ordnernamen nicht mit den Usernamen übereinstimmen, könntest du die ACL lesen, da steht der richtige User drin.

 

Da ist jetzt nicht goldene Antwort mit bei, aber ich hoffe du kannst mit den Ansätzen was anfangen.

Link zu diesem Kommentar

Doch genau das hat mich weitergebracht. Das Script läuft jetzt.

 

Hatte vor einiger Zeit ein Script geschrieben welches Favoriten verteilt.

Es gibt x Admins, y Server und z Webanwendungen (iLo Boards, Brocade Web IF, Netapp Web IF,...).

 

Das Script hat für alle Admins alle direkt Zugänglichen Links auf alle Server verteilt in die jeweiligen Favoriten. Leider kam dann das Problem, dass durch defekte Profile die Zuordnung (ursprünglich den Usernamen) nicht mehr passte. Deswegen wollte ich den genauen Profilpfad auslesen.

Link zu diesem Kommentar

Falls es jemand interessiert. Hier das Script:

 

$hosts = "..\hosts_Server.txt"
$users = ".\users.txt"
$getsid = "c:\Program Files (x86)\SysinternalsSuite\Tools\psgetsid.exe"

foreach($server in (get-content $hosts)){
"Bearbeiten von $server" | write-host -foregroundcolor blue
foreach($user in (get-content $users)){
	"Bearbeiten von $user" | write-host -foregroundcolor blue
	$sid = (& $getsid $user)[1]
	"$user hat die SID: $sid" | write-host -foregroundcolor blue
	$profilepath = Invoke-Command -ComputerName $server -Argumentlist $sid -ScriptBlock { param($sid); (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$sid").ProfileImagePath }
	if($profilepath){
		$remoteprofilepath = ("\\$server\$profilepath").replace('C:','c$')
		"$user hat den Pfad $remoteprofilepath" | write-host -foregroundcolor blue
		foreach($fav in (get-childitem .\Favorites)){
			remove-item "$remoteprofilepath\Favorites\$($fav.name)" -Recurse
		}
		copy-item .\Favorites\* "$remoteprofilepath\Favorites\" -Recurse

		if(Test-Path .\Favoriten_$server){
			copy-item .\Favoriten_$server\* "$remoteprofilepath\Favorites\" -Recurse
		}
	}
}
}


Link zu diesem Kommentar

Hi,

 

vor dem Problem stand ich auch einmal und habe es genauso lösen müssen wie Du jetzt (hier ein paar Snippets):

 

Zuerst die SID auflösen ($username als Parameter übergeben):

function ConvertTo-SID($username)
{
$SID = new-object system.security.principal.NtAccount($UserName)
$SID = $SID.translate([system.security.principal.securityidentifier])	
$SID.value.ToString()
}

Invoke-Expression "Set-Variable -Name UserName -scope script -value $UserName"

 

Dann prüfen, ob ein entsprechendes Profil des Benutzers auf dem aktuellen System vorhanden ist:

 

Test-Path "Microsoft.PowerShell.Core\Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$UserSID"

 

Danach kannst Du dann die Eigenschaften entsprechend prüfen:

$UserProfilePath = (Get-ItemProperty -path "Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$UserSID" -name "ProfileImagePath").ProfileImagePath

 

EDIT: Oh, ok. Da warst Du mit dem Posten schneller als ich mit dem Zusammensuchen der Snippets. :)

EDIT 2: Und jetzt wo ich sehe, wozu Du es benötigst: Das Vorgehen von Dir ist nicht von MS supported. Klar, wird Dir egal sein, aber es ist wichtig zu wissen. ;)

 

Viele Grüße

olc

Link zu diesem Kommentar
Hätte man nicht einfach den Pfad zu den (lokalen) Favoriten auf einen zentralen Share umlenken können?


HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Favorites
[/Code]

 

Nein. Wir bereiben zwar diverse Server / Storages / ESX Umgebungen aber mit der Zentralen IT (GPO's) können wir kaum etwas ändern lassen.

Es geht auch nur um einen kleinen Teil der User, die diese Favoriten benötigen.

 

Hi,

EDIT: Oh, ok. Da warst Du mit dem Posten schneller als ich mit dem Zusammensuchen der Snippets. :)

EDIT 2: Und jetzt wo ich sehe, wozu Du es benötigst: Das Vorgehen von Dir ist nicht von MS supported. Klar, wird Dir egal sein, aber es ist wichtig zu wissen. ;)

 

Viele Grüße

olc

 

Wieso nicht supportet? Was wäre dann supportet?

Link zu diesem Kommentar

Oh, ok - mein Fehler. Du ersetzt ja gar nicht den Pfad in der Registrierung, sondern nutzt das nur als Variable, um Dich remote auf das System zu begeben, korrekt?

 

$remoteprofilepath = ("\\$server\$profilepath").replace('C:','c$')

 

Dann nehme ich alles zurück und behaupte das Gegenteil. ;)

 

P.S.: Mit dem Snippet oben kannst Du Dir PsGetSID sparen. Du kommst mit .NET / PowerShell direkt an die SID ran.

 

P.P.S.: Denk auch daran, daß wenn Ihr die GPOs nicht selbst unter Kontrolle habt, über die IE Maintenance meines Wissens auch Favoriten verteilt werden können. Nicht, daß Du mit den Einstellungen und dem Kopiervorgang Probleme verursachst.

 

Viele Grüße

olc

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...