Jump to content

Systemvariablen setzen


Direkt zur Lösung Gelöst von BOfH_666,

Empfohlene Beiträge

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

Link zu diesem Kommentar
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
Link zu diesem Kommentar
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?

Link zu diesem Kommentar
  • Beste Lösung
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. 

 

Link zu diesem Kommentar
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.

Link zu diesem Kommentar
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?

Link zu diesem Kommentar
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!

Link zu diesem Kommentar

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