有什么方法可以在后台运行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 ...
答案 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
-参数列表
在命令中提供局部变量的值。在命令之前,命令中的变量将被这些值替换。 命令在远程计算机上运行。在中输入值 以逗号分隔的列表。值与变量中的变量关联 列出它们的顺序。 ArgumentList的别名为Args。
ArgumentList参数中的值可以是实际值,例如 1024,也可以引用局部变量,例如$ max。
要在命令中使用局部变量,请使用以下命令格式:
{param($ \ [,$ \] ...) \} -ArgumentList \-或- \
param关键字列出了 在命令中使用。 ArgumentList提供了 变量,按照列出的顺序。