PowerShell远程安装MSI安装包、EXE可执行程序的方法_PowerShell

尽管对IT管理员或者开发者来讲,这是一个很常见的任务,但是在网上能找到“远程安装一个msi包或者exe应用程序”的相关文档还是比较少的。甚至有人在一些论坛的评论中写道,这不可能实现。事实上还是可以的。我会在本文提供两段代码,分别负责远程安装MSI包和EXE可执行应用程序。

一、安装MSI包

使用PowerShell调用WMI对象,你可以执行下面的脚本来安装你的MSI安装包:

复制代码 代码如下:

$box="deviis01" #this is the name of your server
$product= [WMICLASS]"\\$box\ROOT\CIMV2:win32_Product"
Write-Host "Installing software on $box"
$product.Install("c:\Setup \somesoftwarepackage.msi")

它能静默安装还是蛮好的,这样就不再担心要使用命令参数了。

注:有的安装包在安装过程中可能会要求用户选择或者设置很多选项,这另当别论。

二、安装EXE应用程序

蛋疼的是使用上面的方法不能成功安装exe可执行程序的安装包,如果有童鞋有回天之力,能否留言分享下思路或者代码,因为我也很好奇这是否可行。然而,我们可以使用另外一种方法来安装exe。

复制代码 代码如下:

Write-Host "Installing software on $box"
([WMICLASS]"\\$box\ROOT\CIMV2:win32_process").Create(
"cmd.exe /c c:\Setup\somesoftware.exe /s /v`” /qn")

上面的脚本实际上是在远程机器上新创建了一个进程,先调用cmd.exe,将可执行安装包以参数的形式传递过去,然后再把安装程序需要的参数也传递过去。这其中牵扯到了很多字符串的转义,与引号转换,可要格外小心啦。

文章出处:http://www.pstips.net/install-application-remotely.html

时间: 2024-10-11 06:00:18

PowerShell远程安装MSI安装包、EXE可执行程序的方法_PowerShell的相关文章

请问怎么将web工程打包成像通达OA这种可以直接安装的安装包,即exe文件

问题描述 请问怎么将web工程打包成像通达OA这种可以直接安装的安装包,即exe文件 请问怎么将web工程打包成像通达OA这种可以直接安装的安装包,即exe文件

Perl(CGI)默认的MSI安装包安装失败的处理方式_星外虚拟主机

正常性况下,可以直接下载MSI安装包就可以安装成功,如果因为操作系统权限修改过的原因造成无法安装完成,可以用ZIP包中的install.bat运行来安装,下载地址是: http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.7.815-MSWin32-x86-211909.zip

绝对干货:自定义msi安装包的执行过程

有时候我们需要在程序中执行另一个程序的安装,这就需要我们去自定义msi安装包的执行过程.   比如我要做一个安装管理程序,可以根据用户的选择安装不同的子产品.当用户选择了三个产品时,如果分别显示这三个产品的安装交互UI显然是不恰当的.我们期望用一个统一的自定义UI去取代每个产品各自的UI.   平时使用msiexec.exe习惯了,所以最直接的想法就是在一个子进程中执行:          msiexec.exe /qn   这样固然是能够完成任务,但是不是太简陋了? 安装开始后我们想取消这次安

Installshield关于.NET安装时需要重启动的处理办法,以及延伸出的重启后继续安装的安装包的一点想法

原文:Installshield关于.NET安装时需要重启动的处理办法,以及延伸出的重启后继续安装的安装包的一点想法很多朋友做安装包的时候,所打包的软件需要.NET Framework之类的环境,他们会检测系统是否已经安装了.NET,如果没有,则调用.NET安装包来安装.但是.NET安装完是需要重启动的,一般来说,我们都推荐使用/q/norestart的静默安装函数来使重启动推迟到安装结束时,使用如下:LaunchAppAndWait(SUPPORTDIR^"dotNetFx40_Full_x8

PowerShell批量安装msi后辍软件的方法_PowerShell

如果你要安装的MSI包不止一个,可不能使用Invoke-Item,否则PowerShell不会等待前一个安装包安装完毕,就已经运行下一个安装包了.如果在批处理中,我们可能会使用msiexec file.msi /wait.在PowerShell中也可以借助于msiexec.先就这些安装包路径存储到数组中吧: 复制代码 代码如下: $msi = @("c:\file1.msi", "c:\file2.msi", "c:\file2.msi") 然后

C++检查注册表中.net版本号,自动安装.net安装包,然后再执行C#程序

说实在的我的C++功底太浅,希望达人不要笑话 做这篇文章主要是为了解决斯克迪亚的这个问题实现自动判定是否有.Net框架,没有就安装.Net框架! 啥也不说了先来代码吧!代码中注释还算多,如仍有问题请在此文下面的评论中提出 代码 #include <stdio.h>#include <windows.h>#include <iostream> using namespace std; int CheckReg(){ LPSTR regeditStr = "SOF

封装MSI安装包实战解析

今天朋友在部署域的软件分发遇到一个难题 软件不支持EXE格式,只支持MSI格式! 但是常见的软件,基本都是EXE格式的! 这里我说一下,我平时是如何封装把EXE格式封装成MSI格式的! 这里我用到的软件是 Advanced Installer 点击导入,选择重新封装安装 选择启动新的安装捕获

打包安装包exe,安装包打包好以后,点击安装包,是下面界面

问题描述 可以先把软件环境安装好 解决方案 解决方案二:点击安装exe文件,可以弹出如下界面:把软件所需的环境都安装好解决方案三:问题没描述清楚吧?

PowerShell中查询错误编号信息的2个方法_PowerShell

有时候,一些本地命令,比如net.exe,在执行过程中,会返回数字编号形式的错误信息.很郁闷的是,我们不知道这些数字代表什么意思.以前,我们可以使用如下的方式去获取数字代表的信息: 复制代码 代码如下: PS> net helpmsg 3534 The service did not report an error. PS> net helpmsg 1 Incorrect function. PS> net helpmsg 4323 The transport cannot access