我正在尝试在远程计算机上执行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}"
答案 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不起作用。 如果仍然遇到问题,请尝试写出一些调试消息。