首页 > 解决方案 > 运行 EXE 并稍后发送文本

问题描述

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

注意:我不想使用 SendKeys 或需要 UI 的功能也不支持 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"

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

删除-PSSession $s


鲁斯尔特:

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

输入“是”启动服务器

工作ESC ...

标签: powershell

解决方案


好吧,我们在这里帮助您解决您遇到问题的代码,但是,您没有显示任何问题。

因此,请遵循 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

把一些东西放在一起,如果它不起作用就回来。好吧,如果你还没有的话。

另请参阅,如果您以前没有使用过工作。

了解 PowerShell 中的后台作业

OP 更新

感谢您的代码,但如果您的 exe 代码有这个作为参数,那么只需将其传递...</p>

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

另请参阅: PowerShell – 使用远程管理和 Invoke-Command 将参数作为变量传递

调用命令

-参数列表

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

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

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

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

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


推荐阅读