Benutzer mit den meisten Antworten
Powershell: Zählen per Addition innerhalb eines Filters geht nicht

Frage
-
Hallo Leute
ich habe hier etwas, dass sich mir nicht erschliesst. Vielleicht mache ich auch was falsch und sehe es nur nicht.
In meinem Script geht es darum, aus zwei ActiveDirectory Sicherheitsgruppen die Member auszulesen, durch einen Filter laufen zu lassen und wenn die Kriterien erfüllt sind den Counter eine Nummer zu erhöhen. Dazu ziehe ich das Quest ADManagement SnapIn heran.
Die Abfrage der Groupmember funktioniert und der Filter arebitet auch so wie er soll. nur leider wird der counter nicht erhöht. Zeile 7,$counter = $counter +1
Kann es evtl. sein, dass ich soetwas in einem Filter nicht machen kann? Oder übersehe ich da etwas? Die Kontrollausgabe per write-host funktioniert wie gewünscht.
#Filter filter check_relevance() { if ($_.title -ne "Roleaccount" -and $_.path -notlike "*F-Users*") { Write-Host $_.displayname $_.title $_.path $counter = $counter + 1 } } $groups = @("Gruppe1","Gruppe2") $counter = 0 #get-groupmember and check for relevance foreach ($group in $groups) { Get-QADGroupMember -Identity $group -SizeLimit 0 | check_relevance } Write-Host $counter
Danke und Gruß
Antworten
-
Hallo Michael,
dein Problem liegt daran, dass $counter nur in der Funktion gültig ist. Schau Dir mal diesen Artikel an:
http://blogs.msdn.com/b/powershell/archive/2007/04/14/controlling-the-scope-of-variables.aspx
Viele Grüße
Frank
-- Frank Röder MVP Directory Services blog.iteach-online.de --- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 23. März 2011 21:35
Alle Antworten
-
Hallo Michael,
dein Problem liegt daran, dass $counter nur in der Funktion gültig ist. Schau Dir mal diesen Artikel an:
http://blogs.msdn.com/b/powershell/archive/2007/04/14/controlling-the-scope-of-variables.aspx
Viele Grüße
Frank
-- Frank Röder MVP Directory Services blog.iteach-online.de --- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 23. März 2011 21:35
-
Hi Frank
vielen Dank für den Tipp. Es hat mich einiges an Hirnschmalz gekostet um herauszufinden was mit meinem Gültigkeitsbereich nicht stimmte. Die Option -scope hat keinerlei Verbesserung gebracht. Erst als ich -option AllScope benutzt habe, funktionierte das ganze wie gewünscht.
Gruß Michael
-
Hallo Michael,
du kannst auch das prefix "script:" benutzen, für Variablen die nicht nur in einer Funktion, sondern im gesamten Skript gültig sein sollen. Also z.b.:
$script:banane = "gelb"
statt
$banane = "gelb"
Grüße, Denniver
http://bytecookie.wordpress.com/