setx Parameter – Environment Variablen

Um im Windows Explorer, in der Eingabeaufforderung (CMD) und weiteren Anwendungen nicht den kompletten Pfad, oder String schreiben zu müssen gibt es so genannte Umgebungsvariablen, oder auch Environment Variablen genannt. Diese sind sehr praktisch, da man die Variable nur ein mal füllt, man sie aber systemweit benutzen kann. Natürlich können wir diese händisch hinzufügen, bearbeiten und löschen. Allerdings möchte man oft eine Umgebungsvariable bei der Softwareverteilung hinzufügen. Dafür kann der Befehl “setx” verwendet werden. Da dieser viele Möglichkeiten besitzt, gibt es setx Parameter. Diese zeigen wir euch hier.

environment umgebungs variablen

Unterschied Benutzer Variablen und System Variablen

Es gibt wie in der Registry oder bei Gruppenrichtlinien Benutzer (User) aber auch System Variablen. Wenn man Benutzer Variablen definiert, hat natürlich auch nur der angemeldete User darauf Zugriff und kann diese verwenden. Bei System-Variablen ist sind die Variablen systemweit verfügbar, das bedeutet dass jeder Benutzer darauf Zugriff hat. Das sollte aber selbsterklärend sein. Für das Hinzufügen von Systemvariablen sind immer Administrator Rechte notwendig.

 

setx Parameter

Wer bei einer Softwareverteilung Umgebungsvariablen hinzufügen oder anpassen möchte, der kann den Befehl “setx” in der Eingabeaufforderung nutzen. Folgende setx Parameter stehen unter Windows Betriebssystemen zur Verfügung:

Parameter Beschreibung
/s <Computer> Name oder IP eines Remote Computers. Wenn nichts angegeben wird, wird der lokale Computer verwendet.
/u [<Domain>] Führt den Befehl mit einem anderen Benutzer aus. Wenn nichts angegeben ist, wird der aktuelle Benutzer gewählt.
/p [<Password>] Gibt das Passwort zu dem dazugehörigen User an.
<Variable> Gibt den Namen der Umgebungsvariable an.
<Value> Gibt den Wert der Umgebungsvariable an.
/k <Path> Informationen werden auf Basis Registry geschrieben:
\\<HIVE>\<KEY>\...\<Value>
Beispiel:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName
/f <File name> Gibt die Datei an, die benutzt werden soll.
/m Schreibt in die System Variablen. Standard wird in die lokale User Variablen geschrieben.
/? Hilfe wird in der CMD angezeigt.

Dies sind die wichtigsten setx Parameter. Es gibt zwar noch weitere Optionen die verwendet werden können, jedoch werden diese in den seltensten Fällen gebraucht.

setx parameter

 

setx Parameter Beispiele

Um nun eine Umgebungsvariable hinzufügen, beziehungsweise eine Environment Variable hinzufügen zu können, haben wir hier Beispiele. Auch das bearbeiten von bestehenden Einträgen ist möglich.

Neue Variable anlegen (User)

Um eine neue Variable hinzufügen zu können, muss dieser Grundbefehl verwendet werden:

setx VAR-NAME "%ProgramFiles%\OracleInstantClient"

 

Neue Variable anlegen (System)

Dieser Befehl ist gleich zum oben stehenden Befehl, allerdings mit dem Parameter “/M”. Dieser steht für “System”.

setx VAR-NAME "%ProgramFiles%\OracleInstantClient" /M

 

Neue Variable zu bestehende hinzufügen

Um einen String zu einer bestehenden Variable hinzufügen zu können, muss folgender Befehl verwendet werden. Beispiel hierfür ist die oft genutzte “PATH” Variable.

setx /M PATH "%PATH%;%ProgramFiles%\OracleInstantClient"

 

Neue Variable auf Remote Computer hinzufügen

Um eine Variable auf einem Computer im Netzwerk hinzufügen zu können, müssen wir den Remote Computer angeben, und die User Credentials, welche zum anmelden verwendet werden sollen.

setx /s remotecomputer1 /u domain\adminuser /p adminpassword VAR-NAME var-value

 

Bestehende Variable bearbeiten

Um eine bestehende Variable zu bearbeiten, kann der “Neue Variable anlegen” Befehl verwendet werden. Hier wird der bestehende Inhalt überschrieben.

 

Bestehende Variable löschen

Hier wird es interessant. Ich finde es eigentlich lächerlich. Offiziell ist es NICHT möglich mit setx Parameter eine bestehende Environment Variable zu löschen. Man kann also anlegen, aber nicht mehr entfernen.

Händisch löschen

Diese können per Hand gelöscht werden in dem man die Environment Variablen am Computer öffnet.

Registry

Eine alternative ist noch die Registry. Alle Variablen werden in der Windows Registry gespeichert und können dort gelöscht werden.

USER Variablen
REG delete HKCU\Environment /F /V VAR-NAME

System Variablen
REG delete "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /F /V VAR-NAME

 

Unterschied zwischen SET und SETX

SET ändert nur die derzeitige Variable in der laufenden Shell und die Änderungen sind nur temporär. Sobald die laufende Shell geschlossen wird, sind die Änderungen an der Variable verworfen und müssen in einer neuen Session neu geschrieben werden. Dies wird also für Scripte und temporäre Änderungen verwendet.

SETX ändert die Variable dauerhaft in den System-Variablen. Die Änderungen sind also fest geschrieben. Die Änderungen werden nach dem Schreiben gleich aktiv und können genutzt werden. Auch wenn eine neue Session geöffnet wird, steht die Variable zur Verfügung.

 

Ich hoffe wir konnten euch mit den setx Parameter weiterhelfen und das mit setx Beispielen gut erklären. 🙂

Johannes Huber
 

In seiner Freizeit macht Johannes nichts lieber, als für ITnator Beiträge zu schreiben. Input bekommt er hierfür von Problemen in der IT Administration von Servern, Clients und vielen weiteren IT Komponenten.

Click Here to Leave a Comment Below 0 comments