【问题标题】:PowerShell - Respond to a Command responsePowerShell - 响应命令响应
【发布时间】:2014-09-29 19:31:06
【问题描述】:

我正在尝试编写一个简单的脚本,该脚本将在 Windows 中执行控制台命令,该命令始终要求确认是否覆盖现有数据。我认为像下面这样的东西会起作用,但似乎我错了(毫不奇怪,write-host 不与命令行交互,我相信它只是将文本放在屏幕上)。任何人都可以就如何处理这个问题提供一些建议吗?我需要能够每周通过任务调度程序执行脚本而无需交互。

脚本:

Start-Process -NoNewWindow -FilePath pw -ArgumentList @"
    threshold checkpoint create "WeeklyBackup" "WeeklyBackup"
"@
sleep -Seconds 3
$confirm = Select-String -pattern "About to over-write existing CheckPoint 'WeeklyBackup'." -Quiet

if ($confirm)
{
   Write-Host "Y`r" 
}

我希望在控制台中看到的内容:

D:\BMC_Software\ProactiveNet>pw threshold checkpoint create "WeeklyBackup" "Week
lyBackup"
About to over-write existing CheckPoint 'WeeklyBackup'. Do you want to proceed?
(y/n)

然后用户将按 Y 并回车,然后该过程将完成。但我希望这个自动化。

提前感谢您的任何建议。

【问题讨论】:

  • 你试过只做echo "Y`r" | pw吗?
  • 嗯,这大大简化了事情,可以按需要工作。
  • 太棒了!很高兴它成功了。

标签: powershell command-line scripting automation


【解决方案1】:
echo "Y`r" | pw

这通常在批处理文件中使用,但它通常在 PowerShell 中同样有效。

【讨论】:

  • 感谢,我现在可能会把它放在一个批处理文件中,因为我真的不需要使用任何逻辑比较。
  • 批处理文件的唯一问题是您可能无法发送回车。如果您实际上并不需要 CR,那么请务必使用。您也可以通过这种方式发送多个字符,因此您可以批量发送echo yyyyyyyyyyyyyyyyyyyy | pw 并让它回答可能有很多提示。
  • 批量发送 CR 的一种可能方法是创建一个文本文件,其中包含所需数量的“Y”,全部在单独的行上,然后执行以下操作:type y.txt | pw跨度>
猜你喜欢
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 2019-10-23
  • 2018-11-29
  • 2022-01-18
  • 2016-12-25
  • 1970-01-01
  • 2020-12-15
相关资源
最近更新 更多