2017-05-06 11 views
1

Ich habe ein Skript erstellt, das jede Minute über eine geplante Aufgabe auf dem Benutzer-PC ausgeführt wird. Der geplante Task wird von einem Batch-Skript erstellt, das zunächst das PowerShell-Skript ausführt, aber auch den Task so plant, dass er jede Minute ausgeführt wird.Benutzer zur Eingabe auffordern und diese Eingabe für zukünftige Iterationen des Skripts speichern

Ich möchte, dass das PowerShell-Skript den Benutzer nach bestimmten Variablen (Benutzername, E-Mail-Adresse) fragt und diese Variablen bei jeder automatischen Ausführung speichert, bis der Benutzer das Skript manuell ausführt.

Ich weiß, ich kann dies tun:

$email= Read-Host 'What is your email address?' 

Aber wie mache ich es Eingabe speichern, bis er neben manuell geöffnet wird?

Eine Idee, die ich hatte, war ein Batch-Skript, das eine Aufgabe plant, um jede Minute ein Batch-Skript auszuführen. Das Stapelscript würde dann bei jeder Ausführung das PowerShell-Skript ausführen und automatisch und automatisch auf die Fragen antworten, die darauf basieren, wie der Benutzer das Stapelscript bearbeitet. Es muss einen besseren Weg geben.

Antwort

2

Sie könnten etwas tun, was die Konfiguration in einer Datei im XML-Format unter dem Profil des Benutzers gespeichert werden würde, es sei denn, die Datei bereits in dem existierte Fall es sie laden würde:

$ConfigPath = "$env:userprofile\userconfig.xml" 

If (test-path $ConfigPath){ 
    $Config = Import-Clixml $ConfigPath 

}Else{ 
    $ConfigHash = @{ 
     email = read-host "What is your email address?" 
     username = read-host "What is your username?" 
    } 

    $Config = New-Object -TypeName PSObject -Property $ConfigHash 
    $Config | export-clixml $ConfigPath 
} 

Sie dann den Zugriff auf Konfigurationseinstellungen wie folgt:

$Config.email 
$Config.username 

Erklärung

    Definiert
  • einen Pfad die Config zu speichern (die die Umgebungsvariable Userprofile verwendet)
  • Verwendet Test-Path zu überprüfen, ob die Datei
  • existiert Wenn es nicht vorhanden ist, verwendet das Import-CliXML Cmdlets die Datei in ein Powershell-Objekt zu laden in die Variable $Config.
  • Wenn es nicht vorhanden ist, erzeugt eine Hash-Tabelle, die den Benutzer für jede Konfiguration fordert Einstellung
  • New-Object dass Hashtable drehen Verwendet in ein Powershell-Objekt, das in $Config
  • gespeichert Schreibt $Config heraus in eine XML-Datei mit Export-CliXML und speichert es unter dem in $ConfigPath definierten Pfad.
+0

Ich postete das ganze Skript mit dem, was Sie in meiner Frage geschrieben haben. Können Sie überprüfen, ob ich korrekt auf das XML zugreife, wie ich es noch nie zuvor getan habe? – mrcavanaugh09

+0

Ja, das Skript sieht so aus, als sollte es mir funktionieren. Versuchen Sie es und Feedback, wenn Sie Fehler oder unerwartetes Verhalten erhalten. –

+0

schien gut zu funktionieren. XML wurde erstellt und es lief mehrmals mit nur fragen mich einmal nach Informationen. Den Rest kann ich mit einem Batch erledigen, um Aufgaben zu starten und zu planen. Danke für deine Unterstützung. sehr geschätzt – mrcavanaugh09

Verwandte Themen