habe mich jetzt in Advanced Function eingelesen und soweit funktionier mein Skript auch ohne Probleme.
Nur zu einzelnen Abschnitten und Anpassungen habe ich noch Fragen und Probleme.
Hier ist mein Code für die Aufrufparameter:
param( #Skript_umgeschreiben.ps1 -h [Parameter(Mandatory=$false,ParameterSetName=“help”)] #dieser Parameter ist jetzt überflüssig --> Funktioniert Hilfe wird aufgerufen bei AUsführung ohne Parameter [Alias(“h”)] [switch]$help, #Skript_umgeschreiben.ps1 -a #Skript_umgeschreiben.ps1 -a -mail [email protected] [parameter(Mandatory=$false,ParameterSetName=“adminmode”)] [Alias(“a”)] [switch]$adminmode, [parameter(Mandatory=$false,ParameterSetName=“adminmode”)] [Validatescript({ $_ -match "[a-z0-9!#\$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#\$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"})] [string[]]$mail, #Aufruf des Mailmode mit -m [parameter(Mandatory=$false,ParameterSetName=“mailmode”)] [Alias(“m”)] [switch]$mailmode, #Aufruf des Batchmode mit -b #[Skriptnamen].ps1 -b -pw [Pfad\DateiPW.txt] [parameter(Mandatory=$false,ParameterSetName=“batch”)] [Alias(“c”)] [switch]$conf, [parameter(Mandatory=$false,ParameterSetName=“batch”)] [Alias(“b”)] [switch]$batch, [parameter(Mandatory=$true,ParameterSetName=“batch”)] [string]$pw, #Aufruf der Config mit -c [parameter(Mandatory=$false,ParameterSetName=“config”)] [Alias(“c”)] [switch]$conf, #Aufruf des Passwort mit -p [parameter(Mandatory=$true,ParameterSetName=“passwort”)] [Alias(“p”)] [switch]$password, [switch]$create_pwd_file=$false, [switch]$force=$false, [string]$path_to_VM_file="c:\temp\Datei.csv", [string]$OWNER="Owner", [string]$BACKUP_LOCAL="Backup Local", [string]$BACKUP_REMOTE="Backup Remote" )
Im Abschnitt für den Schalter -h:
#Skript_umgeschreiben.ps1 -h [Parameter(Mandatory=$false,ParameterSetName=“help”)] #dieser Parameter ist jetzt überflüssig --> Funktioniert Hilfe wird aufgerufen bei AUsführung ohne Parameter [Alias(“h”)] [switch]$help,
Dieser Abschnitt soll sowohl bei dem Aufruf [Skriptname].ps1 -h als auch beim Aufruf [Skriptname].ps1 angezeigt werden.
Aktuell wird die Hilfe nur beim Aufruf von -h aufgerufen.
Im Abschnitt für den Schalter -a -mail [E-Mail]:
[parameter(Mandatory=$false,ParameterSetName=“adminmode”)] [Alias(“a”)] [switch]$adminmode, [parameter(Mandatory=$false,ParameterSetName=“adminmode”)] [Validatescript({ $_ -match "[a-z0-9!#\$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#\$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"})] [string[]]$mail,
Hier funktioniert alles ohne Probleme. Ich kann -a auch ohne Schalter -mail aufrufen. Kein Problem.
Das Senden der E-Mail funktioniert auch ohne Probleme.
Im Abschnitt für den Schalter: -c -b -pw
[parameter(Mandatory=$false,ParameterSetName=“batch”)] [Alias(“c”)] [switch]$conf, [parameter(Mandatory=$false,ParameterSetName=“batch”)] [Alias(“b”)] [switch]$batch, [parameter(Mandatory=$true,ParameterSetName=“batch”)] [string]$pw,
Dieser Abschnitt funktioniert nicht so ganz und hier habe ich noch Fragen:
Bevor der Batchmode aufgerufen werden kann, soll die Möglichkeit bestehen die Configs zu ändern.
Dies soll mit Aufruf -c erfolgen. Daher auch das $false bei Mandatory.
Die Konfigurationsdatei muss nicht unbedingt konfiguriert werden, da mit einem Skriptteil nach dieser Datei sucht und wenn diese nicht in den Vorgegebenen Pfaden ist ein False zurückgibt und das Skript abgebrochen wird.
Im gleichen Zuge soll gleich die Möglichkeit bestehen, die den eigentlichen Batchmode aufzurufen.
Dieser Aufruf braucht zwingend diese Aufrufparameter -b -pw [Passwortdatei].txt.
Daher steht auch das Mandatory bei PW auf $true.
Ohne den Parameter -c am Anfang funktioniert der Aufruf und der Druchlauf ohne Probleme. -b -pw [Dateiname].txt
Dennoch soll die Möglichkeit bestehen den Parameter -c also das Anpassen der Konfigurationsdatei alleine auch auszulegen.
Dennoch soll die Möglichkeit bestehen den Parameter -pw also das Anpassen der Passwortdatei alleine auch auszulegen.
Daher auch die zusätzlichen Aufrufe für -c und -p.
Nur dann kommt ein Aufruf, dass der [switch] String doppelt vorhanden ist.
Klar könnt eich einen zusätzlichen Pfad im Skript implementieren... das ist aber nicht Sinn der Sachen.
Natürlich sollen auch die verschiedenen Parameter auch andersrum aufgerufen werden können.
Zur Info noch meine aktuelle Skript Struktur:
[CmdletBinding()] param( #Hier befinden sich die Aufrufparameter ) function skript_vm_help{ } function create_password_file { } function read_password_file { } function mail_gueltigkeit { } function Mainone{ } function aufruf_ausgabe_Adminmode { } function aufruf_ausgabe_OhneTags { } function aufruf_ausgabe_Owner { } function test-Mail { } if($help){ skript_vm_help }elseif($adminmode){ # ... }elseif($mailmode){ # ... }elseif($batch){ # ... }elseif($conf){ # ... }elseif($password){ # ... }else{skript_vm_help}
Was mach ich falsch oder habe ich etwas nicht verstanden?
Kann natürlich auch sein, dass ich mein Skript umstellen muss.
MfG
Alex