在远程计算机上运行Powershell脚本

时间:2019-05-14 09:38:44

标签: powershell

我正在尝试在远程计算机上执行Powershell脚本。该脚本将打开一个记事本应用程序,创建一个文件并保存。我在源计算机中使用以下命令运行脚本:

调用命令-ComputerName“ na18actxdc” -ScriptBlock {D:\ NMAutomation \ trial_2.ps1}

该命令在源计算机上运行了很长时间并中断。但是没有创建文本文件。有人可以帮忙吗?

但是,从远程计算机执行相同脚本时,执行速度更快,并且保存了文本文件。我已经使用autoit脚本和psexec选项尝试了相同的概念。它们都不起作用。

远程计算机上的代码:

Import-Module "C:\Program Files (x86)\AutoIt3\AutoItX\AutoItX.psd1"
Invoke-AU3Run -Program notepad.exe
$windowtitle ="Untitled - Notepad"
Wait-AU3WinActive($windowtitle)
$windowhandle = Get-AU3WinHandle -Title $windowtitle
Show-AU3WinActivate -WinHandle $windowhandle 
Send-AU3Key("I'm in notepad"); 
$windowhandle = Get-AU3WinHandle($windowtitle);
$controlHandle = Get-AU3ControlHandle -WinHandle $windowhandle -Control  "Edit1"
Send-AU3ControlKey -ControlHandle $controlHandle -Key "{ENTER}simulate key strokes - line 1" -WinHandle $windowhandle
Close-AU3Win($windowtitle)
$windowtitlesaveas = "Save As"
$windowhandlesaveas = Get-AU3WinHandle ($windowtitlesaveas)
$controlHandlesaveas = Get-AU3ControlHandle -WinHandle $windowhandlesaveas -Control "Edit1"
$windowhandlesaveas -NewText "sample"
$controlHandlesaveas -Key "sample"
Invoke-AU3ControlClick -Title "Notepad" -Control "Button1" -NumClicks 1 
Wait-AU3WinActive("Save As")
Set-AU3ControlText -Title "Save As" -Control "Edit1" -NewText "sample" 
Send-AU3ControlKey -Title "Save As" -Control "Button1" -Key "{ENTER}"

3 个答案:

答案 0 :(得分:0)

来自microsoft

  

如何在远程计算机上运行脚本

     

要在远程计算机上运行本地脚本,请使用Invoke-Command的FilePath参数。

     

例如,以下命令在S1和S2计算机上运行Sample.ps1脚本:

     

PowerShell

     

Invoke-Command -ComputerName S1,S2 -FilePath C:\ Test \ Sample.ps1

     

脚本的结果返回到本地计算机。您不需要复制任何文件。

更改

  Invoke-Command -ComputerName "na18actxdc" -ScriptBlock {D:\NMAutomation\trial_2.ps1}

   Invoke-Command -ComputerName "na18actxdc" -FilePath D:\NMAutomation\trial_2.ps1

希望有帮助。

答案 1 :(得分:0)

我认为这里发生的是通过运行以下命令:Invoke-Command -ComputerName "na18actxdc" -ScriptBlock {D:\NMAutomation\trial_2.ps1} ps1不会执行,而只是在记事本进程中打开。

我相信您要做的就是尝试让它在Powershell中运行。

Invoke-Command -ComputerName "na18actxdc" -ScriptBlock {PowerShell.exe -File D:\NMAutomation\trial_2.ps1}

答案 2 :(得分:0)

要验证使用Powershell远程处理甚至可以执行您想做的事情,您应该验证它可以在实时PSSession中运行。

可以这样做:

PS C:\Users\XXX> Enter-PSSession -ComputerName "na18actxdc"
[na18actxdc]: PS C:\Users\XXX\Documents> D:\NMAutomation\trial_2.ps1

如果脚本成功运行,那么我不明白为什么Invoke-Command不起作用。 如果仍然遇到问题,请尝试写出一些调试消息。