网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

PowerShell自动回复执行文件的询问-创新互联

场景

客户有个升级包,xxx.exe, 使用CMD运行后,会进行一些交互操作。比如,安装到某一步骤,会询问你是否执行该步骤。
现在需要通过PowerShell进行自动化升级,也就是目标exe通过PowerShell执行。

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的延津网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

比较友好的做法可以参考winrm的配置,会提供一个[quiet]参数,或者说参数可以通过外部传入也是可以的。

但是,假如目标exe确实没有提供额外参数,我们该如何自动话执行呢?

转化问题

上面的问题转化为搜索引擎可识别的问题就是“如何让PowerShell在需要确认的时候自动输入?”
换成英语再这么一google
https://stackoverflow.com/questions/14071012/how-do-i-automatically-answer-yes-to-a-prompt-in-powershell

这个问题下,出去PowerShell本身命令通过-Confirm:$false可以关闭之后,其他回答基本都是:

ECHO Y | TARGET.exe

这个ECHO一看就是个alias,我们看看它的面目

通过管道,我们把ECHO Y的输出作为TARGET.exe的输入。

举例子

新建TEST.PS1

$confirmation = Read-Host "Are you Sure You Want To Proceed?"
if ($confirmation -eq 'y') {
    "GO!!!"
}

执行:

我们执行的是PowerShell.exe,TEST.PS1作为其参数

那如果脚本中出现多次确认呢?

$confirmation = Read-Host "Are you Sure You Want To Proceed?"
if ($confirmation -eq 'y') {
    "GO!!!"
}

$confirmation = Read-Host "Are you Sure You Want To Proceed2?"
if ($confirmation -eq 'n') {
    "GO2!!!"

    $confirmation = Read-Host "Are you Sure You Want To Proceed3?"
    if ($confirmation -eq 'y') {
        "GO3!!!"
    }
}


我们输入的"y"只作用了第一次的询问。
即使,输入的"y"能作用于所有的询问,也是有问题的,多次询问中,我们有时候需要回复"y",有时候需要回复"n"。
...
没啥思路,也不好找关键词搜索
开个脑洞,传入数组进去看看如何?

天不生我XXX,PowerShell万古如长夜。


网站题目:PowerShell自动回复执行文件的询问-创新互联
本文来源:http://bjjierui.cn/article/ddpopg.html

其他资讯