【发布时间】:2022-01-07 15:18:19
【问题描述】:
我有一个函数要求用户输入 Y 或 N 来删除文件,我正在尝试将整个函数作为启动作业函数运行。我的代码是:
$JobFunction2 = {
function init {
try {
$output = terraform init
$path = Get-Item -Path ".\"
$in = $output | Select-String "Terraform has been successfully initialized!"
if ($in) {
Write-Host -ForegroundColor GREEN 'Initialization successfull'
}
else {
Write-Host -ForegroundColor YELLOW 'Intiialization failed Please enter Y to delete the .terraform folder'
$fail = del $path/.terraform -Force
$output = terraform init
return $fail, $output
}
}
catch {
Write-Warning "Error Occurred while Initializing the folder and the path is: $path"
}
}
}
Start-Job -InitializationScript $JobFunction2 -ScriptBlock { init } | Wait-Job | Receive-Job
当我运行 start-job 时,它显示“Wait-Job cmdlet 无法完成工作,因为一个或多个作业被阻止等待用户交互”。但是,如果我只调用函数名“init”而不开始工作,它就可以完美地工作。有什么方法可以提示用户输入 Y 或 No 以便该功能可以在 start-job 中工作?
【问题讨论】:
-
如果没有对作业执行上下文如何工作进行一些研究,这纯粹是猜测......,是否有可能以管理员或您要使用的文件夹结构的权限执行,因此@ 987654322@ 确实有效。在工作中,用户的步调上下文发生了变化,因此需要用户输入...
-
不清楚您在寻找什么...您想知道
Read-Host是否可以在 Job 中使用? -
谢谢大家的回复。我已经找到了解决这个问题的方法...我将 $fail 更改为 $fail = Remove-Item $path/.terraform -Force -Recurse -Confirm :$false 并且成功了
标签: powershell scripting terraform