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

尽管对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

(0)

相关推荐

  • Powershell小技巧--远程对比服务配置

    假如你的PS远程运行在两台服务器上,这里有一个简单的脚本教你怎么从每台服务器上得到所有的服务状态并计算他们之间的差别. 复制代码 代码如下: $Server1 = 'myServer1' $Server2 = 'someOtherServer'   $services1 = Invoke-Command { Get-Service } -ComputerName $Server1 |   Sort-Object -Property Name, Status   $services2 = Invo

  • PowerShell小技巧之启动远程桌面连接

    以Windows Server 2012 R2为例,其实非常简单.先启用远程连接: (gwmi -class win32_terminalservicesetting -namespace "root\cimv2\terminalservices").setallowtsconnections(1) 然后再启用几条防火墙规则即可,用PowerShell(需要管理员权限)更显其威武: PS> Get-NetFirewallRule -Name RemoteDesktop* | se

  • PowerShell入门教程之远程操作运行PowerShell的方法

    PowerShell远程操作是远程管理的基础,它为集中管理分布式系统提供了又一种可靠.高效的方法. 一般来说PowerShell远程操作依赖于远程处理基础结构,但为数不多的几个自身具有远程处理能力的命令除外,如Get-Service.Get-Process.Get-WMIObject.Get-EventLog和Get-WinEvent等.(不难看出,这些命令都是"读取"系统的某些方面的信息,不做更改.它们依赖.Net Framework完成远程操作.) 配置远程基础结构 远程基础结构是

  • Powershell小技巧之非相同域或信任域也能远程

    默认通过Enable-PSRemoting打开PS远程,启动了Kerberos认证.这个方法只适合两台电脑在相同域或信任域内的指定电脑(名字可以带后缀).但它不支持跨域.域外或IP地址. 要让它能正常工作,你需要改变计算机的远程方式.请用管理员权限执行下面命令: 复制代码 代码如下: PS> Set-Item WSMan:\localhost\Client\TrustedHosts -Value * -Force 如果这个路径非法,你可能首先需要在电脑上打开PS远程(使用"Enable-P

  • Powershell小技巧之开启关闭远程连接

    如果你要通过Powershell远程访问电脑.这时你必须在对方电脑(你想要访问的电脑),用管理员权限执行下面代码: 复制代码 代码如下: PS> Enable-PSRemoting -SkipNetworkProfileCheck -Force 一旦你这样执行了代码,你只要拥有目标电脑的本地管理员权限就能从其它窗体访问这台电脑了.当两台电脑在同一个域内你就可以直接指定计算机名而不需要它的IP的地址. 启动交互方式: 复制代码 代码如下: PS> Enter-PSSession -Compute

  • PowerShell小技巧之添加远程防火墙规则

    接着昨天的场景,虽然将Windows Server 2012 Core的默认控制台设置成了PowerShell,还启用了远程桌面,但是对于Core版本的服务器来讲,远程桌面形同鸡肋,所以我想启用PowerShell远程访问,在服务器上以管理员权限运行: Enable-PSRemoting -Force 在尝试建立远程连接时,提示访问被拒绝,此时可能是防火墙问题:我需要使用PowerShell添加PowerShell远程防火墙规则: New-NetFirewallRule -Name powers

  • 使用HTTP api简单的远程执行PowerShell脚本

    可能有些情况下,你不想完全体验通过PSRP(PowerShell远程处理协议)远程管理,或有需要从非Windows系统上执行一些PowerShell脚本.你可能会像我很久之前在这篇文章中写的那样直接基于WS-Man来写代码.但是那样很复杂,并且需要WS-Man和SOAP的一些知识. 我在PowerShell脚本中使用.Net HttpListener类写了个HTTP监听器.你可以非常简单地启动一个监听器的实例(需要提升权限监听网络),现在你可以执行任意的PowerShell命令了,它还可以返回多

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

    尽管对IT管理员或者开发者来讲,这是一个很常见的任务,但是在网上能找到"远程安装一个msi包或者exe应用程序"的相关文档还是比较少的.甚至有人在一些论坛的评论中写道,这不可能实现.事实上还是可以的.我会在本文提供两段代码,分别负责远程安装MSI包和EXE可执行应用程序. 一.安装MSI包 使用PowerShell调用WMI对象,你可以执行下面的脚本来安装你的MSI安装包: 复制代码 代码如下: $box="deviis01" #this is the name o

  • Perl(CGI)默认的MSI安装包安装失败的处理方式

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

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

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

  • Electron autoUpdater实现Windows安装包自动更新的方法

    前言 Electron帮助我们突破浏览器的界限,通过Electron构建的桌面应用拥有各种浏览器应用梦寐以求的能力. Electron提供的autoUpdater还可以帮助我们实现桌面应用的自动更新. 文件结构 首先,我们已经有了一个基于Electron做的应用,项目中有两个package.json.这样做的一个原因是将devDependencies和dependencies分开了,另外就是不需要在打包的时候再去指定哪些依赖不需要一起打到安装包里面去了(通过ignore参数). 目录结构类似于这

  • Python封装成可带参数的EXE安装包实例

    最近有一个小项目,有如下的需求: 将某几个源码文件夹进行打包,文件夹内有py文件.dll文件.exe文件等各种文件类型 打包生成的安装包,在进行安装的时候,应该能够带有参数,对配置文件进行修改配置 安装过程中,可以配置系统环境变量 能够检测环境,提示安装依赖包 整个过程要可以自动化,能够大量部署 综合考虑后,决定以下几个步骤完成: 用setup.py将源码文件夹都打包成msi安装包,这样可以使用msiexec进行静默安装 setup.py可以提示用户安装依赖包,否则安装失败 再编写一个py文件,

  • MSI之制作免输序列号安装包的方法

    本文用到的工具:Orca,可以在 http://www.crsky.com/soft/8680.html 下载到 挺象orz的 呵呵 以下是orca的简介: Orca 是一款由微软提供的用于 Windows Installer 数据库表编辑器.可用来编辑 Windows Installer 数据库文件 (.msi) 文件,合并模块 (.msm) 文件,补丁 (.msp) 文件,内部一致性计算程序 (.cub) 文件和补丁创建属性 (.pcp) 文件.是修改和本地化 Windows Install

  • Navicat for SQLite安装使用教程 附安装包

    Navicat for SQLite安装教程+安装包 百度网盘下载: 链接: https://pan.baidu.com/s/1o5OprZ18eEnKbbl5jMhWOQ 提取码: qwk9 1.在本站下载并解压,可得到navicat150_sqlite_cs_x64.exe源程序以及注册机 2.双击源程序开始安装,点击同意安装软件协议 3.选择软件安装路径,默认即可 4.选择桌面快捷方式 5.耐心等待安装 6.安装完成,退出向导 7.将注册机文件夹中的文件复制到安装目录下替换,打开注册机,选

  • VB.NET中调用MSI卸载软件的2个方法

    最近在折腾组里面的那个破Lab,要自己写程序每天安装最新版本的build.而今天手头上没有任何任务,所以把用到的一些东西记下来以供今后参考.这篇日志来记录如何在.NET中卸载别的软件. 一.直接使用MSI安装包 如果你知道MSI安装程序的路径,那么显然可以直接使用即可: 复制代码 代码如下: msiexec /x "C:Table Manager Clients.msi" /quiet /qn /quiet参数表示自动卸载,/qn表示 显示任何UI. 这个方法很简单,推荐使用.但是如果

  • MySQL 5.5/5.6/5.7及以上版本安装包安装时如何选择安装路径

    安装环境需求: 自从昨天安装了mysql 5.7,发现了一个问题,mysql5.6起,已经不支持2003系统了,如果安装了无法开启服务而且会出现在 本地计算机 无法启动 MySQL57 服务.错误 193: 0xc1,那就是版本不兼容,提示mysqld.exe不是正确的32位程序. 昨天整理的一篇mysql 5.7的安装教程大家可以参考一下: http://www.jb51.net/article/82399.htm 路径问题就可以参考下面的文章了: 从2016年4月以后从官方下载的mysql

  • 已证实Au_.exe是NSIS安装包的一个组成部分与说明

    已证实Au_.exe是NSIS安装包的一个组成部分,不是病毒其卸载360safe时的确会连接如下地址的80端口 60.195.253.85 抓包如下: 源地址:10.1.5.189  端口:1214        目标地址:60.195.253.85  端口:80        TTL: 64        PacketSize:64 协议:TCP                TCP 标志:ACK|URG 0x02 0x04 0x05 0xAC 0x01 0x03 0x03 0x02 0x01

随机推荐