我通过计划任务每分钟构建一个在用户PC上运行的脚本。计划任务由最初运行PowerShell脚本的批处理脚本创建,但也会将任务计划为每分钟运行一次。
我希望PowerShell脚本提示用户输入某些变量(用户名,电子邮件地址),并在每次自动运行时记住这些变量,直到用户下次手动运行脚本为止。
我知道我可以这样做:
$email= Read-Host 'What is your email address?'
但是如何保存输入直到下次手动打开它?
我的一个想法是拥有一个批处理脚本,可以安排任务每分钟运行批处理脚本。然后,批处理脚本将在每次运行时运行PowerShell脚本,并根据用户编辑批处理脚本的方式自动并静默响应所提问题。必须有一个比这更好的方法。
答案 0 :(得分: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将文件加载到变量$Config
中的PowerShell对象中。New-Object
将该Hashtable转换为存储在$Config
$Config
将Export-CliXML
写入XML文件,并将其存储在$ConfigPath
中定义的路径下。