运行EXE,然后再发送文本

时间:2019-04-07 17:52:26

标签: powershell

有什么方法可以在后台运行Powershell来启动EXE,并等待获取消息“输入服务名称”,然后输入“ xxx”

注意: 我不想使用需要用户界面的SendKeys或功能 EXE也不支持参数传递

示例:

test.exe VB.NET控制台应用程序。我该如何向应用发送“是”以开始服务。

模块测试

Sub Main()

    Console.WriteLine("Input 'Yes' to Start Server")

    Dim MyX = Console.ReadLine

    If MyX = "Yes" Then

        Console.WriteLine("Service Started ...")

    Else

        Console.WriteLine("Job ESC ...")

    End If

End Sub

结束测试


电源外壳

$ s = New-PSSession -ComputerName“ localhost”

调用命令-会话$ s -ScriptBlock { C:\ test \ test.exe 是的

} Remove-PSSession $ s


Rueslt:

PS C:\ Windows \ system32> C:\ Users \ e000136 \ Desktop \ Untitled1.ps1

输入“是”以启动服务器

工作ESC ...

1 个答案:

答案 0 :(得分:1)

好吧,我们在这里为您提供有问题的代码的帮助,但是,您没有显示任何代码。

所以,请遵循LotPings的建议。

但是,为了不让您空手而归。只要您知道自己想要什么以及如何去做,几乎所有事情都是可行的。但是,再次:

您在尝试的代码在哪里?

您研究了什么?

PowerShell具有作业cmdlet。查看帮助文件中的示例,了解如何使用它们。

Get-Command -Name '*job' | Format-Table -AutoSize

# get function / cmdlet details
(Get-Command -Name Start-Job).Parameters
Get-help -Name Start-Job -Full
Get-help -Name Start-Job -Online
Get-help -Name Start-Job -Examples

(Get-Command -Name Get-Job).Parameters
Get-help -Name Get-Job -Full
Get-help -Name Get-Job -Online
Get-help -Name Get-Job -Examples

(Get-Command -Name Receive-Job).Parameters
Get-help -Name Receive-Job -Full
Get-help -Name Receive-Job -Online
Get-help -Name Receive-Job -Examples

将某些东西放在一起,如果不起作用,请回来。好吧,那就是如果您还没有的话。

如果您以前没有使用过作业,也请参见。

Understanding Background Jobs in PowerShell

OP的更新

感谢代码,但是如果您的exe代码将此参数作为参数,则只需将其传递给…

$s = New-PSSession -ComputerName "localhost"
Invoke-Command -Session $s -ScriptBlock { C:\test\test.exe } -ArgumentList 'Yes'
Remove-PSSession $s

另请参阅: PowerShell – Passing Parameters as Variables using Remote Management and Invoke-Command

Invoke-Command

  

-参数列表

     

在命令中提供局部变量的值。在命令之前,命令中的变量将被这些值替换。   命令在远程计算机上运行。在中输入值   以逗号分隔的列表。值与变量中的变量关联   列出它们的顺序。 ArgumentList的别名为Args。

     

  ArgumentList参数中的值可以是实际值,例如   1024,也可以引用局部变量,例如$ max。

     

要在命令中使用局部变量,请使用以下命令格式:

     

{param($ \ [,$ \] ...)   \} -ArgumentList \-或-   \

     

param关键字列出了   在命令中使用。 ArgumentList提供了   变量,按照列出的顺序。