Jump to content

Frage generell zu Function.


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Leute ich wünsche euch einen guten Morgen :)

 

ich hab mir gerade die Frage gestellt ob es Sinn macht Schleifen in einer Function verpacken.

 

Z.b Mein Beispiel BackupTool

 

#Backup Tool 
Clear-Host


# Funkton 1
function Select-Folder($message='Wählen Sie einen Ornder', $path = 0) {  
   $object = New-Object -comObject Shell.Application   

   $folder = $object.BrowseForFolder(0, $message, 0, $path)  
   if ($folder -ne $null) {  
       $folder.self.Path  
   }  
}  

##################################################################################################################




$date = Get-Date -Format d.MMMM.yyyy
$var1 = Select-Folder 'Wählen Sie den Ornder aus denn Sie sichern möchten!'

###############################################################################################################

if (Test-Path -Path $var1)
{ 
Write-Host "Die Eingabe war korrket."
}
else{
Write-Host "Der Angebene Ornder exestiert nicht bitte prüfen sie die Schreibweise und achten sie auf Groß/Klein Schreibun"
#Write-Host "Der Pfad zum Ornder ist nicht Korrekt:"$var1 
}

$var2 = Select-Folder 'Wählen Sie nun den Ornder denn sie als Backup verwenden möchten!'


if (Test-Path -Path $var2)
{ 
Write-Host "Die Eingabe war Korrekt."
cd $var2
$var3 = mkdir $date -Force
Copy-Item -Path $var1 -Destination $var3 -Recurse -Force | Write-Host "Kopiervorgang gestartet dies kann einige Zeit in Anspruch nehmen" 
For($i = 1; $i -le $files.count; $i++)
{ Write-Progress -Activity "Backup von den Daten" -status "Backup gestartet" `
-percentComplete ($i / $files.count*100)}
$backup_log = Dir -Recurse $var2 | Sort-Object | out-File "$var2\backup_log.txt"  

Write-Host "Der Kopiervorgang abgeschlossen auf"$var2 
Write-Host "Das Protokoll finden sie unter:"$var2

}
else
{
Write-Host "Der Angebene Ornder exestiert nicht"
Write-Host "Der Pfad zum Ornder von ihrer Eingabe:"$var2 
}

#################################################################################################################

 

Würde es sinn machen den Unteren Teil in ein Function einzubauen ?

Oder ist es z.b bei diesem Beispiel 2 Rangig ?

 

Sollte ich in der Zukunpf eher function bauen ?

 

Danke ich freue mich auf Antworten

 

LG

 

Schreckinger

Link zu diesem Kommentar

Mit Funktionen steigerst du die Übersichtlichkeit deines Programmiercodes.

Das heißt im oberen Bereich deines Skriptes lagerst du sämtliche Funktionen aus und im unteren Bereich hast du dann den Aufruf der einzelnen Funktionen.

 

Besonders vorteilhaft, du kannst einzelne Funktionen relativ leicht in anderen Skripten verwenden.

Wie z.B. Timestamp, Emailer uvm.

In wie weit das jetzt in deinem Skript sinnvoll ist das zu unterglieder müsstest du selbst abwegen.

 

Gerade im Bereich Fehlerabarbeitung kann man tolle Konstrukte bauen, die erheblich besser als ein TryCatch sind.

 

Ich habe mir generell angewöhnt, sämtlichen Code möglichst in Funktionen zu fassen.

 

Grüße Admin

 

Hier zum Beispiel verschiedene Tests, macht ja Sinn das zu untergliedern (Ping, HTTP Test, Überprüfung freier Speicherplatz)

#Funktion Ping
function ping ($ping_host)
{
$ping = new-object system.net.networkinformation.ping
$pingreturns=$ping.send($ping_host)
if($pingreturns.status -ne "success")
{
#Platzhalter Fehlerabarbeitung
echo 'fehler'
}
}
#Funktionsaufruf / Beispiel
#1er DNS Server
ping ("192.168.0.1")
#2er DNS Server
ping ("8.8.8.8")

#Funktion Website
function Test-Site ($URL)
{
$webclient = New-Object Net.WebClient
#Berechtigungen für den Aufruf werden gesetzt
$webclient.Credentials = [system.Net.CredentialCache]::DefaultCredentials
if($webclient.Proxy -ne $null)
{
$webclient.Proxy.Credentials = `
[system.Net.CredentialCache]::DefaultNetworkCredentials
}
# Hier ist der Hauptaufruf
$webclient.DownloadString($URL) | Out-Null
#Fehlerüberprüfung
if ($error[0] -ne $null)
{
#Fehlermeldung wird gesetzts
$error_msg=$error[0]
$error_msg
}
}

#Funktionsaufruf Website
Test-Site "http://domain.tld/yoursite"

#Speicherplatz prüfen
function diskspace ($drive)
{
#Läd ein Listenobjekt
$disk_list=get-wmiobject win32_logicaldisk -filter "Name = '$drive'"
#Gibt den freien Speicher in Megabyte an
$disk_space=$disk_list.Freespace/1MB
if($disk_space -le 7000) #weniger als 7GB dann wird eine Fehler MSG ausgegeben
{
$error_msg="Fehler im Laufwerk '$drive'. Freier Speicher beträgt nur noch '$disk_space' MB"
$error_msg
}

}

diskspace ("c:")
diskspace ("g:")

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

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