Auswahl zweier Variablen zu einer zusammenführen
Moin miteinander,
und wieder eine Frage bezüglich Powershell:
Ich habe das Problem, dass ich gerade an einem script arbeite, welches dem Benutzer eine Auswahl bietet. und die Auswahl soll in eine Variable gesetzt werden.
Beispiel:
Später soll die Abfrage als variable $Domain gesetzt werden...z.B:
wie kann ich das realisieren?
Vielen Dank für eure Antworten.
Grüße,
Complex
und wieder eine Frage bezüglich Powershell:
Ich habe das Problem, dass ich gerade an einem script arbeite, welches dem Benutzer eine Auswahl bietet. und die Auswahl soll in eine Variable gesetzt werden.
Beispiel:
function domain {
Write-Host -ForegroundColor Green "1) Domain xyz.banane.com"
Write-Host -ForegroundColor Green "2) Domain zzz123.banane.com"
$uinput = Read-Host "Bitte Domain 1 oder 2 auswählen"
Switch ($uinput)
{
1 {domain1}
2 {domain2}
}
function domain1 {
$domain = xyz.banane.com
}
function domain2 {
$domain = zzz123.banane.com
}
Später soll die Abfrage als variable $Domain gesetzt werden...z.B:
function kontoaktivieren {
Get-ADUser -Filter {SamAccountName -like $user} -Server $domain | Set-ADUser -Enabled $true
}
wie kann ich das realisieren?
Vielen Dank für eure Antworten.
Grüße,
Complex
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 251284
Url: https://administrator.de/contentid/251284
Ausgedruckt am: 05.11.2024 um 18:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo complex,
hast du die "Functionitis" ?
Inzwischen solltest du die Variable-Scopes kennen , hast du ja schon in deinen vergangenen Posts genutzt.
http://technet.microsoft.com/de-de/library/hh847849.aspx
Btw solltest du weniger Funktionen für solch simple Aufgaben anlegen und stattdessen dies in einer Funktion zusammenfassen, Funktionen können auch Parameter übergeben werden, so sind sie dann universell verwendbar und du musst nicht immer mit Script-Variablen und Scopes hantieren: http://technet.microsoft.com/en-us/library/hh847743.aspx
Grüße Uwe
hast du die "Functionitis" ?
Inzwischen solltest du die Variable-Scopes kennen , hast du ja schon in deinen vergangenen Posts genutzt.
http://technet.microsoft.com/de-de/library/hh847849.aspx
Btw solltest du weniger Funktionen für solch simple Aufgaben anlegen und stattdessen dies in einer Funktion zusammenfassen, Funktionen können auch Parameter übergeben werden, so sind sie dann universell verwendbar und du musst nicht immer mit Script-Variablen und Scopes hantieren: http://technet.microsoft.com/en-us/library/hh847743.aspx
Grüße Uwe
Also du kannst es so machen:
so ist die Variable $script:domain in deinem ganzen Script verfügbar, ansonsten ist sie nur Funktionslokal verfügbar.
Du solltest wie geschrieben Funktionen verallgemeinern und nicht von Variablen aus dem Script abhängig machen, dies machst du mit Parametern. Deine letzt genannte Funktion könntest du also so schreiben:
Aufrufen kannst du dann die Funktion mit deinen lokalen Variablen die du gerade in deiner Function zur Verfügung hast:
in der Funktion verwendest du dann die Parametervariablen, und schon ist die Funktion unabhängig Das ist der eigentliche Zweck einer Funktion.
function choosedomain {
Write-Host -ForegroundColor Green "1) Domain xyz.banane.com"
Write-Host -ForegroundColor Green "2) Domain zzz123.banane.com"
$uinput = Read-Host "Bitte Domain 1 oder 2 auswählen"
Switch ($uinput)
{
1 {$script:domain = 'xxx.domain.de'}
2 {$script:domain = 'yyy.domain.de'}
}
}
Du solltest wie geschrieben Funktionen verallgemeinern und nicht von Variablen aus dem Script abhängig machen, dies machst du mit Parametern. Deine letzt genannte Funktion könntest du also so schreiben:
function kontoaktivieren ($user,$domain) {
Get-ADUser -Filter {SamAccountName -like $user} -Server $domain | Set-ADUser -Enabled $true
}
kontoaktivieren $lokale_uservariable $lokaleDomainvariable
Ich schmeiße gerne die Daten in ein array und lasse den Benutzer den Index auswählen:
function choosedomain {
[array]$myarr = "xyz.banane.com","zzz123.banane.com"
for ($i=0; $i -lt $myarr.Count; $i++) {
Write-Host -ForegroundColor Green $i":" $myarr[$i]
}
$uinput = Read-Host "Bitte Domain auswählen"
return $myarr[$uinput]
}
$retval = choosedomain
Write-Host $retval