2017-05-06 25 views
1

我構建了一個腳本,該腳本通過計劃任務每​​分鐘在用戶PC上運行。計劃任務由批處理腳本創建,該腳本最初運行PowerShell腳本,但也計劃任務每​​分鐘運行一次。提示用戶輸入並保存該輸入以用於將來迭代的腳本

我想讓PowerShell腳本提示用戶輸入某些變量(用戶名,電子郵件地址),並在每次自動運行時記住這些變量,直到用戶下一次手動運行腳本。

我知道我能做到這一點:

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

但我怎麼把它存輸入,直到它被下一個手動開啓?

我有一個想法是有一個批處理腳本,安排任務每分鐘運行一個批處理腳本。然後,批處理腳本將在每次運行時運行PowerShell腳本,並根據用戶編輯批處理腳本的方式自動靜默地回答問題。必須有比這更好的方式。

回答

2

你可以做這樣的事情,這將作爲XML文件中的配置存儲用戶下配置文件,除非該文件已經存在,在這種情況下它會加載:

$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 
} 

然後訪問配置設置如下:

$Config.email 
$Config.username 

說明

  • 定義來存儲配置(其使用環境變量用戶配置)
  • 用途Test-Path,以檢查是否該文件如果它存在存在
  • 的路徑,採用Import-CliXML cmdlet來加載該文件中,以一個PowerShell對象在變量$Config
  • 如果它不存在,則創建它提示每種配置設置
  • 用途New-Object把這一哈希表中,以被存儲在$Config
  • 一個PowerShell對象的用戶一個哈希表寫入$Config使用了XML文件Export-CliXML並將其存儲在$ConfigPath中定義的路徑下。
+0

我發佈了你寫在我的問題中的所有腳本。你可以驗證我正確訪問XML,因爲我從來沒有像這樣做過嗎? – mrcavanaugh09

+0

是的,你的腳本看起來應該適合我。如果您遇到任何錯誤或意外行爲,請嘗試並反饋。 –

+0

似乎工作得很好。 xml被創建並運行多次,只向我詢問一次信息。我可以用批處理來完成其餘任務,以啓動和計劃任務。非常感謝你的協助。非常感謝 – mrcavanaugh09

相關問題