Maraun 12 Geschrieben 9. Januar 2012 Melden Teilen Geschrieben 9. Januar 2012 Hallo zusammen, wir haben hier in einer Domäne knapp 1500 User, die mit ihrem Terminalserverprofil auf zwei unterschiedlichen Citrix-Servern liegen. Ich habe per PS Script mal die User und ihre jeweiligen Terminal Server Profile abgefragt, das sieht in etwa so aus: Benutzername Terminalserverpfad Benutzer 1 \\server1\profile\benutzername Benutzer 2 \\server2\profile\benutzername Benutzer 3 \\server2\profile\benutzername $OU = "domain.de/ou" Get-QADUser -SearchRoot $OU -includedproperties name,tsprofilepath | select name, tsprofilepath Jetzt würde ich gerne alle Profile nur noch auf einem Terminal Server ablegen. Wenn ich mich für einen Server entschieden habe, besteht dann die Möglichkeit, den Wert des tsprofilepath per PS fest zu schreiben, bzw. die ersten Zeichen, bis nach profile? Oder muss ich den Benutzername jedes Benutzers zusätzlich auslesen und im Script setzen? Vorab danke für alle Antworten. Viele Grüße Alex Zitieren Link zu diesem Kommentar
NorbertFe 2.066 Geschrieben 9. Januar 2012 Melden Teilen Geschrieben 9. Januar 2012 Also normalerweise gibts dafür die Variable %username%. ;) Ob und wie man da per PS rankommt weiß ich nicht, aber ich würd dafür einfach admodify nehmen. ;) Bye Norbert Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 9. Januar 2012 Melden Teilen Geschrieben 9. Januar 2012 Hi, du kannst mir %username% arbeiten. Schau dir mal PowerShell ActiveDirectory - PowerShellPraxis.de -> Beispiel 2 an. Wenn das Skript auf einem win7-client laufen soll, musst du dort erst die tsuserex.dll registrieren (siehe Anmerkung unter dem Beispiel) blub Zitieren Link zu diesem Kommentar
Maraun 12 Geschrieben 10. Januar 2012 Autor Melden Teilen Geschrieben 10. Januar 2012 Danke Euch zwei für die Antworten. Prinzipiell ist die Variable %username% nutzbar, allerdings sind die Benutzerprofile nicht immer mit ihrem Benutzernamen angelegt, habe ich gerade erfahren. Das heißt für mich, ich muss die Profilnamen auslesen und eigentlich nur die vorgesetzte Serveradresse im Feld Terminalserverprofil ändern. Wie Norbert schreibt, werde ich mir dafür mal admodify anschauen, wenngleich ich es gerne auch unter Powershell lösen würde. Viele Grüße Alex Zitieren Link zu diesem Kommentar
Maraun 12 Geschrieben 10. Januar 2012 Autor Melden Teilen Geschrieben 10. Januar 2012 Hallo nochmals, so, ich habe jetzt etwas Zeit mit der Umsetzung verbracht und hänge an einem Punkt zur Umsetzung am Script. Da die Usernamen variieren, kann ich keine Variablen, Anmeldenamen oder ähnliches nutzen. Ansonsten wäre das die Lösung: Get-QADUser -SearchRoot 'domäne.de/OU'|%{$_.tsprofilepath ='\\server1\profiles$\' + $_.samaccountname;$_.CommitChanges();} Daher habe ich mal alle Domänenuser mit ihren Terminalserverprofilpfaden ausgelesen, diese dann per Suchen/Ersetzen auf den passenden Server umbenannt und würde nun gerne in eine Test-OU die Werte zurückschreiben. Aber da passt was an meinem Script nicht. Ich habe aus den abgefragten Werten eine CSV erstellt und versuche, diese per import-csv Befehl in die Test-OU zu schreiben. Kann mir hierfür speziell mit den Werten samaccountname und tsprofilepath jemand einen Tipp geben? Meine csv sieht so aus: samaccountname,tsprofilepath test1,\\server1\profile$\username xyz Viele Grüße Alex Zitieren Link zu diesem Kommentar
Maraun 12 Geschrieben 11. Januar 2012 Autor Melden Teilen Geschrieben 11. Januar 2012 Also für alle, die es interessiert, oder die vor dem gleichen Problem bezüglich der Terminal Server Profile stehen, hier meine Lösung: TSProfilePath Werte anzeigen: Get-QADUser -SearchRoot 'domäne.com/OU' -SizeLimit 0 | Where-Object {$_.TsProfilePath -like ''} | select samaccountname, tsprofilepath -like'' bestimmt hier den eingetragenen Wert, in dem Fall also leer, bzw. keinen Pfad eingetragen. TSProfilePath Wert schreiben: Get-QADUser -SearchRoot 'domäne/OU'|%{$_.tsprofilepath ='\\server\profil\' + $_.samaccountname;$_.CommitChanges();} Bei uns bestehen die Citrix-Benutzerprofile aus dem Server+Pfad+Benutzername, deshalb der samaccountname am Ende. Wer jetzt das Script weder auf der gesamten Domäne noch auf einer speziellen OU anwenden will, sondern lieber per Liste arbeitet, kann das Script benutzen. Dabei benötigt man nur ein TXT oder CSV File mit der Auflistung der samaccount Namen. Import-CSV Pfad der Datei txt oder csv | %{ Set-QADUser -Identity $_.samaccountname -TsProfilePath "\\server\pfad$\$($_.samaccountname)"} Bei uns ist abschließend noch das Problem, dass nicht alle Benutzer den Anmeldenamen als Profilnamen haben. In diesem Fall lese ich diese User aus, schreibe sie in eine Textdatei, ändere per Suchen und Ersetzen den Serverpfad und schreibe sie über den Import-CSV Befehl wieder zurück in die AD. Viele Grüße Alex Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.