使用 Powershell 脚本进行静默安装

2023-12-24

我正在尝试使用 PowerShell 无提示脚本安装一个客户端软件。下面是我创建的脚本,它不起作用并抛出如下错误:

无法验证参数“ArgumentList”上的参数。参数为 null、空或参数集合的元素包含 null 值。提供一个不包含任何空值的集合,然后重试该命令

下面的行是正确的还是有任何错误,我在这里遇到问题。

$Args = @("/S", "/L1033", -INSTALL_TYPE=PRESERVE_VERSION, START_MENU=AStartMenuFolder\Software\production\)

完整脚本:

$INSTALLDIR = "C:\Software\Software.exe"
$Args = @("/S", "/L1033", -INSTALL_TYPE=PRESERVE_VERSION, START_MENU=AStartMenuFolder\Software\production\)
$logfile = "D:\BACKUP\Install_Logfile.txt"
$ErrorActionPreference = 'Stop'
try {
    $exitcode = (Start-Process $Installer -ArgumentList $Args -NoNewWindow -Wait -Passthru).ExitCode    
    if ($exitcode -eq 0) {
        [System.Windows.MessageBox]::Show('Installation Completed Successfully')
    } else {
        [System.Windows.MessageBox]::Show('Installation Failled')
    }
} catch {
    "$_" | Out-File $logfile -Append
    {[System.Windows.MessageBox]::Show('Installation Failled')}
}

Edit:

$Installer = "C:\OTE\OTE.exe"
$params = @("/S", "/L1033", "-INSTALL_TYPE=PRESERVE_VERSION", "-START_MENU=AStartMenuFolder\OTE\production\")
$logfile = "C:\Install_Logfile.txt"
$ErrorActionPreference = 'Stop'

& $Installer @params
if ($LastExitCode -eq 0) {
    [Windows.MessageBox]::Show('Installation Completed Successfully')
} else {
    "$_" | out-file $logfile -append
    [Windows.MessageBox]::Show('Installation Failled')
}

在上面的脚本中我收到如下错误,

无法验证参数“ArgumentList”上的参数。参数为 null、空或参数集合的元素包含 null 值。提供一个不包含任何空值的集合,然后重试该命令。


您可能需要在代码中修复以下几处内容:

  • $args is an 自动变量 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-3.0。不要尝试覆盖它。使用不同的变量名称,例如$params。正如其他人已经提到的,在定义数组时将参数放在引号中。
  • 除非您有特定的理由使用Start-Process使用起来更容易呼叫接线员 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_operators?view=powershell-3.0 and 飞溅 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_splatting?view=powershell-3.0.
  • 外部程序不会抛出 PowerShell 异常,因此使用try/catch对他们来说是毫无意义的。
  • PowerShell自动将外部程序的退出代码记录在自动变量中$LastExitCode.
$installer = 'C:\Software\Software.exe'
$params = '/S', '/L1033', '-INSTALL_TYPE=PRESERVE_VERSION',
          'START_MENU=AStartMenuFolder\Software\production'

& $Installer @params
if ($LastExitCode -eq 0) {
    [Windows.MessageBox]::Show('Installation Completed Successfully')
} else {
    [Windows.MessageBox]::Show('Installation Failled')
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Powershell 脚本进行静默安装 的相关文章

随机推荐

  • 如何在 Jenkins 中将安全类型从 SSL 更改为 TLS?

    我正在尝试设置 smtp 电子邮件通知 我可以看到 Gmail 部分工作正常 我想为我的 Office 365 配置它 smtp服务器 smtp office365 com 我们没有配置 SSL 相反 我们使用 TLS 如何在 Jenkin
  • 如何通过删除 NA 值的选项来融合 Pandas 中的数据框

    我有一个像这样的 Pandas 数据框 df pd DataFrame VAR1 V1 V2 V2 V3 V4 V4 V5 VAR2 C1 C1 C1 C2 C2 C2 C3 VAR3 S1 S2 S3 S4 VAR4 S3 S4 S5 S
  • 更改应用程序默认描述语言

    我正在将我的应用程序的新版本提交到应用程序商店 有没有办法更改 iTunesConnect 中的默认应用程序语言 假设我有法语作为默认描述语言 我需要更改default到英语 我怎么做 您的应用程序必须处于 准备销售 状态 然后 转到您的应
  • 是否可以根据变量标签选择列?

    对于非常广泛的数据集 是否可以使用变量标签来选择列 library expss data mtcars mtcars apply labels mtcars mpg Miles US gallon cyl Number of cylinde
  • 在Python中使用Windows换行符在Linux上高效读取csv文件

    下面是在windows下逐行读取csv文件的工作 f open filename r for line in f 但是当将 csv 文件复制到 Linux 服务器时 它失败了 应该提到的是 由于 csv 文件很大 性能是一个问题 因此 我担
  • C++ 嵌套迭代器

    可以使用像下面这样的嵌套迭代器吗 for vector
  • Google Play alpha/beta 测试的最大测试人员数量

    我的应用程序还没有发布 我可以通过 Google Play 测试我的应用程序的 Alpha Beta 测试人员的最大数量是多少 对于 iOS 每个构建有 1000 名外部测试人员 Google Play 的限制是多少 没有有效限制 尽管有G
  • Unix中会话和进程组的用途和意义?

    Unix 进程有一个会话ID并且是一部分进程组 可以使用以下功能更改 查询setsid getpgrp 然而 一个概念进程组 and session总是让我困惑 有人能解释一下不同的会话和进程组提供什么意义吗 为什么 何时要创建一个新会话或
  • 无法从 Artifactory 中托管的 NuGet 流中找到包

    因此 我们设置了一个 Artifactory 来为我们的团队共享不同的资源 其中之一当然是 N uGet 包 现在 我对 Artifactory 非常陌生 我的一位队友在 Artifactory 上上传了一个 NuGet 包 并给出了如下所
  • CNContact 最后修改日期和联系人更改

    问题 如何在 CNContact 新的苹果联系人框架 中获取最后修改日期 最后修改日期不存在于keysToFetch 列表中 我想获取并更新自上次获取以来已修改的联系人 我怎样才能做到这一点 根据苹果员工的回复 目前还没有相关的 api h
  • ruby - 获取按日期过滤的记录

    我有一个 作业 模块 以及数据库中的相应表 该模块有一个名为cheduled run 日期时间 的字段和一个名为user id的字段 我怎样才能获得属于某个用户并安排在今天的所有工作 我怎样才能获得属于某个用户并安排在上周的所有工作 要获取
  • 一个文件中的多个 PHP 查询用于 AJAX 调用

    对于 AJAX 我完全是个菜鸟 只是想知道是否 创建 ajax 调用时 ajax type POST url http link to php file php data link variable 我是否必须创建多个 PHP 文件 每个文
  • Mockito - doReturn() 和when() 之间的区别

    我目前正在使用 Mockito 在 Spring MVC 应用程序中模拟我的服务层对象 我想在其中测试我的控制器方法 然而 当我阅读 Mockito 的细节时 我发现这些方法doReturn when 相当于when thenReturn
  • Spring Boot 与 Thymeleaf 帖子列表

    我想将字符串列表发布到我的控制器 但它总是只取第一个选择的值 我的百里香 html 表单
  • 如何使用 cefsharp 将输入传递给 javascript 函数

    我正在尝试将 CefSharp WebView 添加到我的 WPF 应用程序中 以代替我们使用的原始 WebBrowsers WebBrowser 有一个 InvokeScript 函数 http msdn microsoft com en
  • 在java中执行linux命令并将输出显示到html表

    我有jsp代码df h用于在网站上显示磁盘信息 如何使用表格将输出显示为 html 代码如下 String disk String line String process Process p BufferedReader input p R
  • 如何在 C# 中从单个完整路径创建多个目录?

    如果您有如下完整路径 C dir0 dir1 dir2 dir3 dir4 您将如何最好地实现它以便所有目录都存在 BCL中有这个方法吗 如果没有 最优雅的方法是什么 我会打电话Directory CreateDirectory C dir
  • 在Spring security中使用mysql数据库对用户进行身份验证?

    我想使用 Spring security 对我的 Web 应用程序中的用户进行身份验证 由于我不是 Spring 框架的成熟用户 我无法清楚地了解如何进行配置设置以使用 jdbc user service 我已经完成了以下配置 但它不起作用
  • 如何让 NHibernate 忽略 POCO 中的属性

    我们有 POCO 类似 public class Person public Guid PersonID get set public string FirstName get set public string LastName get
  • 使用 Powershell 脚本进行静默安装

    我正在尝试使用 PowerShell 无提示脚本安装一个客户端软件 下面是我创建的脚本 它不起作用并抛出如下错误 无法验证参数 ArgumentList 上的参数 参数为 null 空或参数集合的元素包含 null 值 提供一个不包含任何空