Jump to content
Sign in to follow this  
JuppDietz

Powershell: TS-Profilpfad editieren

Recommended Posts

Hallo.

 

Ich muss aus dem W2k3-AD den TerminalServer-Profilpfad auslesen und in Abhängigkeit einer ganzer Reihe von Faktoren ggf. neue Pfade setzen. Nun habe ich die entsprechende Schnittstelle ins AD eingerichtet und kann auch mit dem "Get-ADUser"-Kommando die User abfragen.

Nach einer Suche im Schema habe ich herausgefunden, dass der TS-Profilpfad im Attribut "userParameters" steht - was ein Binärfeld ist.

 

Hat jemand eine Idee, wie ich über die Powershell trotzdem an das Feld herankomme?

 

Danke und Gruß

Jupp

Share this post


Link to post

Hallo JuppDietz,

 

die Quest AD Commandlets können das auch ;)

PowerShell Commands (CMDLETs) for Active Directory by Quest Software

 

Set-QADUser -Identity <User> [-TsProfilePath <String>]
[-TsHomeDirectory <String>] [-TsHomeDrive <String>] [-TsWorkDirectory <String>]
[-TsInitialProgram <String>] [-TsMaxDisconnectionTime <TimeSpan>] [-TsMaxConnectionTime
<TimeSpan>] [-TsMaxIdleTime <TimeSpan>] [-TsAllowLogon] [-TsRemoteControl <Int32>]
[-TsReconnectionAction <Int32>] [-TsBrokenConnectionAction <Int32>]
[-TsConnectClientDrives] [-TsConnectPrinterDrives] [-TsDefaultToMainPrinter]

Share this post


Link to post

Moin.

 

Ich habe bereits befürchtet, den komplizierten Weg über das ADSI gehen zu müssen. Dann muss ich mich jetzt wohl damit ein wenig befassen...

 

Mit den Quest-Tools geht es leider nicht. Der Pfad des TS-Profils steht leider nicht im Feld "TsProfilePath". Das Feld gibt es zwar ab W2k8 im AD-Schema, wird jedoch meines Wissens selbst dort noch nicht genutzt. Der Profilpfad steht leider im Schema-Attribut "userParameters" - und das Attribut ist verschlüsselt bzw. nicht lesbar :-(( Zudem habe ich einen W2k3-Domain...

 

Beispiel:

 

[PS] C:\>Get-QADUser -Identity testuser | ft name,TsProfilePath

Name                                                        TsProfilePath
----                                                        -------------
_Test Account

 

Im Userkonto sehe ich den Pfad...

 

Gruß

Jupp

Edited by JuppDietz
Beispiel hinzugefügt

Share this post


Link to post

Moin,

 

ich kenne das Quest-Cmdlet nicht, aber das neue Feld wird in der Tat nicht verwendet.

 

faq-o-matic.net Terminalserver-Profileinstellungen in AD: Die ungenutzte Neuerung

 

Das Feld userParameters ist einfach ein BLOB, nicht besonders verschlüsselt, aber eben auch nicht ohne Weiteres les- und schreibbar.

 

Allgemein macht PowerShell mit AD frühestens ab 2008 R2 Spaß. Bei älteren Systemen würde ich altbewährte Techniken einsetzen ...

 

Gruß, Nils

Share this post


Link to post

Hallo Nils,

 

so hart würde ich es jetzt auch nicht sehen :-) Aber du hast schon recht. Mit den älteren Kisten ist die Arbeit manchmal ein bisschen schwierig. Leider bin ich nicht so der VB-Scripter und mit Batches macht es noch weniger Spaß :-))

 

Gruß

Jupp

Share this post


Link to post

Moin,

 

Es gibt bei den Quest Commandlets zwei Dinge zu beachten.

1. funktionieren die TS-Einstellungen nur auf Server Betriebssystemen (2003/2008) und nicht auf Windows XP

2. musst du danach die Methode CommitChanges aufrufen, dann klappts - eben erfolgreich getestet ;)

 

$deinuser = get-qaduser <Username>
$deinuser.TsProfilePath = "\\server\profilpfad"
$deinuser.CommitChanges()

Share this post


Link to post

Perfekt!!! Ich habe das Ganze auf meinem Win7-Client ausgeführt und da funktioniert es nicht. Nun habe ich es auf dem DC selbst gemacht und - wie bereits von dir getestet - funktioniert es.

 

Anmerkung: Mit der PowerGUI kann ich die Änderung auch auf meinem Client machen. Nur über die Konsole tut er es nicht...

 

Eigentlich sollte das Script aus Gründen der Portierbarkeit nicht auf einem Server laufen müssen, sondern von einem Client aus, aber egal :-))

 

Vielen Dank!!

 

Grüße aus dem Westerwald

Jupp

Edited by JuppDietz

Share this post


Link to post

Jetzt habe ich es auch von der Konsole aus:

 

Man sollte nicht vergessen, das SnapIn in die Konsole zu laden bzw. im Profil zu hinterlegen :-)

 

Add-PSSnapin quest.activeroles.admanagement

Share this post


Link to post

Hallo Jupp,

 

Kompliziert ist es mit ADSI auch nicht besonders

 

#User suchen
$ds=([ADSISearcher]"LDAP://")  
$ds.filter="(&(ObjectCategory=user)(samaccountname=KarlNapf))"
$ds.findone().path #=DN des gefundenen Users

#Objekt binden
$user=[ADSI]($ds.findone().path) #kannst auch direkt den User eingeben

#Eigenschaft setzen
$user.invokeset("TerminalServicesProfilePath","\\192.168.47.11\`$TSHome") # `zum Maskieren des $-Zeichens
$user.setinfo()

 

Ich bin ein Freund von Kompatibilität und nutze am liebsten möglichst global anwendbare Skripte ohne Quest-Erweiterungen etc.

Wenn man sich den Aufwand ansieht, den antike Techniken wie VBS für solch eine Lösung erfordern würden, macht Powershell doch auf jeden Fall Spass :).

 

cu

blub

 

PS: Ich habe mir erlaubt, deine Aufgabe hier etwas näher zu erläutern

http://www.powershellpraxis.de/ActiveDirectory.949.0.html unter 4.2.2

Edited by blub

Share this post


Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...