Jump to content

Systemvariablen setzen


Direkt zur Lösung Gelöst von BOfH_666,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene BeitrÀge

Geschrieben

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

Geschrieben (bearbeitet)
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) {

 

bearbeitet von BOfH_666
Geschrieben
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?

  • Beste Lösung
Geschrieben
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. 

 

Geschrieben

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

Geschrieben

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

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

Geschrieben
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?

Geschrieben
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!

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