none
Powershell: Zählen per Addition innerhalb eines Filters geht nicht RRS feed

  • 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ß

    Mittwoch, 23. März 2011 14:19

Antworten

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 --
    Mittwoch, 23. März 2011 17:04
  • 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

     

     

     

     

    Montag, 28. März 2011 13:37
  • 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/
    Montag, 28. März 2011 18:15
    Moderator