Jump to content

Powershell: TS-Profilpfad editieren


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

Empfohlene Beiträge

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

Link zu diesem Kommentar

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]

Link zu diesem Kommentar

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

bearbeitet von JuppDietz
Beispiel hinzugefügt
Link zu diesem Kommentar

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

Link zu diesem Kommentar

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()

Link zu diesem Kommentar

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

bearbeitet von JuppDietz
Link zu diesem Kommentar

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

bearbeitet von blub
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...