powershell远程下载exe并执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了powershell远程下载exe并执行相关的知识,希望对你有一定的参考价值。

参考技术A 要靠powershell脚本编写是很困难的,但是可以编写为exe后缀的可执行文件。网上有powershell脚本打包软件可以很轻松的将powershell脚本打包成 “exe”可执行文件。

Powershell远程在Azure A7虚拟机执行Java JVM失败

       近期。使用Powershell脚本在A7 (8核,56G内存)配置的 Azure VM(Virtual Machine。虚拟机)上远程运行Java JVM时 (java.exe -version)。总是失败并返回例如以下的错误信息。

相同的Powershell脚本。在其他低于A7配置的VM上远程运行一切正常;此外,假设使用远程桌面登录到VM上,再进行相同的操作,一切运行正常。


Error occurred during initialization of VM
Unable to allocate 458752KB bitmaps for parallel garbage collection for the requested 14680064KB heap.

Error occurred during initialization of VM
Could not reserve enough space for object heap

   

       以上的实验排除了是JVM(1.7)本身的问题。 看来问题非常有可能是出在Powershell的远程运行方式上。

Powershell Remoting依赖于WinRM (Windows Remote Management)在远程机器上运行操作。默认情况下,WinRM为每一个Powershell远程连接分配了最大(MaxMemoryPerShellMB=1024)1G的内存空间(早期的版本号仅仅有150M),用于运行远程操作。

但远程操作所需的运行内存空间 > 1G时,就会出现了内存不足的问题,不同的操作可能表现会有所不同,如:有的会抛出OutOfMemoryException等。针对这个问题。解决的办法就是添加MaxMemoryPerShellMB,然后重新启动WinRM服务:


$maxMemoryPerShellVM = 3072
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB $maxMemoryPerShellVM
Set-Item WSMan:\localhost\Plugin\Microsoft.PowerShell\Quotas\MaxMemoryPerShellMB $maxMemoryPerShellVM

Write-Output "List MaxMemoryPerShellMB configuration"
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 
Get-Item WSMan:\localhost\Plugin\Microsoft.PowerShell\Quotas\MaxMemoryPerShellMB 

# Restart WinRM service to make the change take effect
Restart-Service winrm


详细要添加到多大的内存,须要自己去实验一下。


參考资源

http://blog.patricknielsen.net/2012/01/powershell-remote-system-call-using.html

http://stackoverflow.com/questions/4741676/powershell-problem-running-java-remotely












以上是关于powershell远程下载exe并执行的主要内容,如果未能解决你的问题,请参考以下文章

linux远程重启windows

使用CertUtil.exe下载远程文件

powershell 使用Powershell下载远程URL

Powershell远程在Azure A7虚拟机执行Java JVM失败

如何使用 PsExec 执行远程命令

如何使用 PsExec 执行远程命令