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.
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 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. 🙂