none
Foreach nicht verlassen. RRS feed

  • Frage

  • hallo zusammen

    ich habe mehrere system die ich mit get-content in ein array speichere. als erstes wird überprüft ist die maschine am netz wenn ja wir überprüft kann ich auf c:\windows zugreifen. wenn alles funktioniert soll er mir ein script block ausführen. wenn der ping funktioniert aber ich auf c:\windows nicht zugreifen kann muss mir angegeben werden kein zugriff und die nächste maschine überprüfen ohne die foreach schleife zu verlassen. wie soll ich vorgehen? mit break funktioniert es nicht.

    script:

    $compnames = Get-Content C:\temp\system.txt
    $WinFolder = Test-Path "\\$compname\c$\Windows" -PathType Container
    foreach ($compname in $compnames) 
    { 
     
            if (test-Connection -ComputerName $compname -Count 1 -Quiet ) 
    		{
    			Write-Host -ForegroundColor Green "$compname Online" 
    			
    			if ($WinFolder -eq $false)
    				{	
    					Write-Host "No Access $compname"
    					
    				}	
    				else
    				{
    				Script Block
    				}
    	else
    	{
    		Write-Host ""
    		Write-Warning "$compname seems dead not pinging" 
    		"$date `t $compname `t Offline " | Out-File -FilePath $logfile -Append
    		Write-Host ""
            } 

    vielen dank

    grüsse


    • Bearbeitet Disco_G Mittwoch, 23. Januar 2013 10:21
    Mittwoch, 23. Januar 2013 10:21

Antworten

  • $WinFolder = Test-Path "\\$compname\c$\Windows" -PathType Container

    Kann aus zwei gründen nicht Funktionieren!

    1. Die Zeile MUSS in die Schleife damit $Compname immer mit dem Aktuellen Computer ersetzt wird.

    2. C$\ wird von der PowerShell als Variable $\ Interpretiert hier Muss das Dollarzeichen mit dem Backtick maskiert (ungültig gemacht) werden.

    So wird ein Schuh daraus:

    $compnames = Get-Content C:\temp\system.txt
    
    foreach ($compname in $compnames) 
    { 
     
        if (test-Connection -ComputerName $compname -Count 1 -Quiet ) 
    	{
    			Write-Host -ForegroundColor Green "$compname Online" 
    			
    			if ((Test-Path "\\$compname\c`$\Windows" -PathType Container) -eq $false)
    			{	
    					Write-Host "No Access $compname"		
    			}	
    			else
    			{
    				Write-Host -ForegroundColor Green "$compname Online und Windows Verzeichnis ist da!"
    	        }
    	}		
    	else
    	{
    		Write-Host ""
    		Write-Warning "$compname seems dead not pinging" 
    		#"$date `t $compname `t Offline " | Out-File -FilePath $logfile -Append
    		Write-Host ""
        }
    }


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    • Als Antwort markiert Disco_G Mittwoch, 23. Januar 2013 12:32
    Mittwoch, 23. Januar 2013 10:39

Alle Antworten

  • $WinFolder = Test-Path "\\$compname\c$\Windows" -PathType Container

    Kann aus zwei gründen nicht Funktionieren!

    1. Die Zeile MUSS in die Schleife damit $Compname immer mit dem Aktuellen Computer ersetzt wird.

    2. C$\ wird von der PowerShell als Variable $\ Interpretiert hier Muss das Dollarzeichen mit dem Backtick maskiert (ungültig gemacht) werden.

    So wird ein Schuh daraus:

    $compnames = Get-Content C:\temp\system.txt
    
    foreach ($compname in $compnames) 
    { 
     
        if (test-Connection -ComputerName $compname -Count 1 -Quiet ) 
    	{
    			Write-Host -ForegroundColor Green "$compname Online" 
    			
    			if ((Test-Path "\\$compname\c`$\Windows" -PathType Container) -eq $false)
    			{	
    					Write-Host "No Access $compname"		
    			}	
    			else
    			{
    				Write-Host -ForegroundColor Green "$compname Online und Windows Verzeichnis ist da!"
    	        }
    	}		
    	else
    	{
    		Write-Host ""
    		Write-Warning "$compname seems dead not pinging" 
    		#"$date `t $compname `t Offline " | Out-File -FilePath $logfile -Append
    		Write-Host ""
        }
    }


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    • Als Antwort markiert Disco_G Mittwoch, 23. Januar 2013 12:32
    Mittwoch, 23. Januar 2013 10:39
  • hallo peter

    hat alles wunderbar geklappt. vielen dank für deine hilfe.

    grüsse

    Mittwoch, 23. Januar 2013 12:32