Jump to content

Systemvariablen setzen


Go to solution Solved by BOfH_666,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

Posted

Liebes Forum,

 

ich möchte eine Systemvariable prüfen und wenn sie nicht vorhanden ist, setzen:

$check = $false
while ($check = $false) {

if ([Environment]::GetEnvironmentVariable('tnsadmin')) {
    "TNSADMIN Systemvariable vorhanden."
    $check = $true
}


else {
    Write-Host "TNSADMIN Systemvariable NICHT vorhanden." -ForegroundColor Red
    Write-Host "Lege TNSADMIN an." -ForegroundColor Green
    [Environment]::SetEnvironmentVariable('TNSADMIN', 'C:\instantclient_12_1\client-1\network\admin\', 'Machine')
}

}

Das it-else funktioniert auch wunderbar und legt die fehlende Variable an, aber der while-Check kann die Variable nicht finden, da diese außerhalb der Session erstellt wurde und so in der aktuellen Session noch nicht vorhanden ist.

Wie kann ich diese neu erstellte Systemvariable dennoch abprüfen?

 

Viele Grüße

Davorin

Posted (edited)
vor 4 Stunden schrieb Scharping-FVB:
while ($check = $false)

Damit weist Du der Variablen "$check" den Wert "$false" zu. Da diese Operation mit an Sicherheit grenzender Wahrscheinlichkeit IMMER funktioniert, wird das "while" immer "true" sein, oder?  ... oder hab ich was falsch verstanden?

In der "while" condition sollte also nur stehen 

while ($check) {

 

Edited by BOfH_666
Posted
vor 1 Minute schrieb BOfH_666:

Damit weist Du der Variablen "$check" den Wert "$false" zu. Da diese Operation mit an Sicherheit grenzender Wahrscheinlichkeit IMMER funktioniert, wird das "while" immer "true" sein, oder?  ... oder hab ich was falsch verstanden?

In der "while" condition sollte also nur stehen 

while ($check) {

 

Au weia, was ein Anfängerfehler...

So geht es aber auch nicht:

$check = $false
while ($check -eq $false) {

da die Systemvariable nicht in der PS-Sitzung zur Verfügung steht, eine Abfrage liefert nur den Zustand zum Zeitpunkt des Startens der Sitzung, nicht den geänderten Zustand mit der angelegten Variablen.

 

Mir fehlt also immer noch die Aktualisierung der Systemvariablen in die aktuelle Sitzung.

Weiß da jemand mehr?

  • Solution
Posted
vor 9 Stunden schrieb Scharping-FVB:

da die Systemvariable nicht in der PS-Sitzung zur Verfügung steht, eine Abfrage liefert nur den Zustand zum Zeitpunkt des Startens der Sitzung, nicht den geänderten Zustand mit der angelegten Variablen.

Wie wahrscheinlich ist es denn, dass der Befehl eine Umgebungsvariable zu setzen fehlschlägt? Im einfachsten Fall checkst Du einfach "$?"  ... dann kannst Du davon ausgehen, dass der Befehl erfolgreich ausgeführt wurde. 

 

Posted

Hilft beides nix beim Ursprungsproblem - Prozesse erben ihre Umgebung, wenn sie erstellt werden. Danach ändert sich daran nichts mehr. Gibt nur einen "Frickel-Workaround": Variable nicht nur global setzen, sondern auch im aktuellen Prozess. Hilft aber allen anderen Prozessen natürlich nichts :-)

  • Like 1
Posted

Was ist denn das eigentliche Ziel? Warum willst Du das zwingend in der aktuellen Session machen? Wenn Du eine Software-Verteilung hast, starte einfach 2 unabhängige Sessions nacheinander. In der zweiten hast Du dann Deine Umgebungsvariable wie gewünscht. Oder zur Not per "geplanter Aufgabe" .... 

Posted
vor 1 Minute schrieb BOfH_666:

Was ist denn das eigentliche Ziel? Warum willst Du das zwingend in der aktuellen Session machen? Wenn Du eine Software-Verteilung hast, starte einfach 2 unabhängige Sessions nacheinander. In der zweiten hast Du dann Deine Umgebungsvariable wie gewünscht. Oder zur Not per "geplanter Aufgabe" .... 

Ich möchte sicher gehen, dass die Systemvaribale auch fest gesetzt wurde und nicht nach der Session wieder weg ist.

Aber weiter oben wurde ja schon erwähnt, dass das Setzen einer Systemvariablen auch fest ist und nicht nur in der Sitzung.

Posted
vor 1 Minute schrieb Scharping-FVB:

Ich möchte sicher gehen, dass die Systemvariable auch fest gesetzt wurde und nicht nach der Session wieder weg ist.

Das macht ja der "Kontext", den Du mit "Machine" angibst.

 

Meine eigentliche Frage ging eher in Richtung "Was ist das GROSSE Ziel?" oder "Warum willst Du dafür so einen großen Aufwand betreiben?" ... oder "Gibt es Grund zur Annahme, dass das Setzen der Umgebungsvariable,  nicht wie gewünscht funktioniert?"

 

Hast Du Dich denn schon für eine Lösung entschieden?

Posted
vor 8 Minuten schrieb BOfH_666:

Meine eigentliche Frage ging eher in Richtung "Was ist das GROSSE Ziel?" oder "Warum willst Du dafür so einen großen Aufwand betreiben?" ... oder "Gibt es Grund zur Annahme, dass das Setzen der Umgebungsvariable,  nicht wie gewünscht funktioniert?"

 

Ich möchte das narrensicher machen, damit auch (m)eine Vertretung, die nicht Vollzeit-Windows-Admin ist, eine zuverlässige Methode hat, die Systemvaribale zu setzen.

Anfangs dachte ich, dass ich falsch programmiert hätte, lag aber eben daran, dass die Änderungen an den Systemvariablen nicht in die Session synchronisiert werden.

Daher ist das Problem ja gelöst, weil es kein wirkliches war :-)

 

Vielen Dank an alle, die sich Gedanken und/oder Vorschläge gemacht haben!

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

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.   Paste as plain text instead

  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.

×
×
  • Create New...