Powershell 参数路径的值为 NULL

2024-01-31

我开发了一个 PS1 文件,它将负责基于服务器列表应用 SQL Server 补丁。因此,它将读取一个文本文件,其中包含我需要修补并应用修补程序的所有服务器。 我决定使用 PARAM 作为“源文件夹”(我将在其中获取服务器列表并记录输出); “目标文件夹”(我将能够在其中运行补丁)、“文件”(补丁名称)、“实例”(我将运行补丁更新的 SQL Server 实例)。 当我开始运行下面的命令时,它可以读取服务器列表(因此,第一个参数可以),但是,它返回以下错误中止进程。 下面的代码缺少什么或者我做错了什么?

PS:我还想使用 Try...Catch 在输出文件上记录消息。我写对了吗? 提前致谢!

[CmdletBinding()]
Param (
  [Parameter(Mandatory=$True,Position=0)]
  [string]$foldersource,

  [Parameter(Position=1)]
  [string]$folderdest,

  [Parameter(Position=2)]
  [string]$file,

  [Parameter(Position=3)]
  [string]$instance

)
foreach ($cluster in GC "$foldersource\Servers_List.txt")
{
    $output = "Server: $cluster Patch Installation on: $(Get-Date -format 'u')" 
try{
    Invoke-Command -ComputerName $cluster -ScriptBlock 
    {
        cd $folderdest
        .\$file /X:$folderdest
        Start-Sleep -s 10
        .\SETUP.exe /action=patch /instancename=$instance /quiet /IAcceptSQLServerLicenseTerms
    }
    -ErrorAction Stop; 
    $output += " SUCCESS"
   }
catch
   {
      $output += "Failed - $($_.exception.message)"
   }
$output | Out-File -Append $foldersource\Patch_Result_Non_SP.txt
} 

我如何运行上面的命令: .\SQL_Server_install_non-Service_Pack_V2.ps1 "D:\Software\Patch" "D:\Software" "SQLServer2008R2-KB3045316-x64.exe" "MSSQLSERVER"

ERROR:

Cannot process argument because the value of argument "path" is null. Change the value of argument "path" to a non-null value.
+ CategoryInfo          : InvalidArgument: (:) [Set-Location],   PSArgumentNullException
+ FullyQualifiedErrorId : ArgumentNull,Microsoft.PowerShell.Commands.SetLocationCommand
+ PSComputerName        : 

   The term '.\$file' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, 
verify that the path is correct and try again.
+ CategoryInfo          : ObjectNotFound: (.\$file:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
+ PSComputerName        : 

The term '.\SETUP.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, 
verify that the path is correct and try again.
+ CategoryInfo          : ObjectNotFound: (.\SETUP.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
+ PSComputerName        : 

你必须通过以下方式传递你的论点-ArgumentList or via $using公约Invoke-Commandcmdlet。既然你没有那样做$folderdest, $file在范围内将为空Invoke-Commandscriptblock -> scriptblock 定义了一个单独的范围!

From 微软 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/invoke-command?view=powershell-5.1:

-参数列表

提供命令中局部变量的值。在远程计算机上运行命令之前,命令中的变量将替换为这些值。在以逗号分隔的列表中输入值。值按照变量的列出顺序与变量关联。 ArgumentList 的别名是 Args。

另请查看以下示例Invoke-Commandcmdlet 通过Get-Help Invoke-Command -Examples.

如果你不喜欢ArgumentList您也可以使用解决方案远程变量 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_remote_variables?view=powershell-5.1.

此外,您还应该定义您的绝对路径Setup.exe!

所以你的代码应该是这样的:

....
 Invoke-Command -ComputerName $cluster -ArgumentList $file, $folderdest, $instance -ScriptBlock 
{
    Param(
       [string] $rFile,
       [string] $rfileDest,
       [string] $rInstance
    )
    
    # Remove Write-Host after the script block works fine -> Write-Host is only a quick and dirty way to dump the variables content

    Write-Host $rFile
    Write-Host $rfileDest
    Write-Host $rInstance

    cd $rfileDest

    $someArgs = "/X:{0}" -f $rfileDest
    Start-Process -FilePath  $rFile -ArgumentList $someArgs -Wait -PassThru

    Start-Sleep -s 10

    $setupArgs = "action=patch /instancename={0} /quiet /IAcceptSQLServerLicenseTerms" -f $rInstance

    Start-Process -FilePath ".\Setup.exe" -ArgumentList $setupArgs -Wait -PassThru

}
....

希望有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell 参数路径的值为 NULL 的相关文章

  • powershell stdin 管道和重定向

    你好 我一直在制作一个小的跨平台脚 本 我可以将其卷曲并通过管道传输到bash和Powershell中 基本思想是服务器向解释器发送一个命令 然后它给出一个命令将所有输出重定向到标准输出 bash 中的一个例子是 some commands
  • 如何在不使用实体框架的情况下从.Net Core连接到SQL Server?

    我们如何从 Net Core连接到SQL Serverwithout使用实体框架 你可以简单地使用传统的方式SqlConnection 这是一个例子 public class BaseDataAccess protected string
  • 在 azure Devops 管道中部署 SQL 时遇到错误

    我在 azure Devops 的发布管道中使用 sql DACPAC 类型的部署 但出现以下错误 我对 SQL 不了解 有什么建议吗 Publishing to database database name on server Serve
  • [Regex]::Replace() 和 -replace 有什么区别?

    我明白了之间的区别 Replace and replace 但是什么是 replace and Regex Replace 我测试了以下两个代码 但对我来说结果完全相同 我还提到了 PowerShell Cookbook O reilly
  • 使用 UTF-8 编码的 Powershell 字符串变量

    我检查了许多与此相关的问题 但找不到解决我的问题的东西 基本上 我想将 UTF 8 编码的字符串存储在变量中 然后使用该字符串作为文件名 例如 我正在尝试下载 YouTube 视频 如果我们打印视频标题 则会显示非英文字符 ytd这是you
  • 将图像列保存到 SQL Server 2000 中的文件

    我在 SQL Server 2000 中有一个包含图像列的表 我需要将图像数据保存到文件系统上的文件中 在 SQL Server 2005 中 我可以使用 ADODB Stream 对象进行文件 I O 但这在 SQL Server 200
  • 将变量传递给 Start-Job

    我必须在这里遗漏一些非常简单的东西 这是一个非常基本的脚本来说明我正在尝试的内容 Computers comp1 comp2 ScriptBlock New Item C Temp C txt Force Foreach C in Comp
  • 如何连接子查询的第一行?

    我有一个发票表和一个按键关联的相关数据的子表 特别是 对于每张发票 我只对子表中的第一个相关行感兴趣 鉴于我想要每个发票键都有一个相关行 我该如何实现这一点 Select i Invoice Number c Carrier Name Fr
  • 合并sql中的列

    我正在使用 SQL Server 2017 有一个存储过程 其中我有一个带有连接的简单选择 例如 SELECT p legacyKey AS JobNumber p Name AS JobName G Label AS DesignStat
  • SQL 查询将文本数据存储在 Varbinary(max) 中

    有没有办法让 varbinary 在 SQL Server 中接受文本数据 这是我的情况 我有相当大量的 XML 我计划以 压缩 格式存储它们 这意味着 Varbinary 但是 当我进行调试时 我希望能够翻转配置开关并以纯文本形式存储 以
  • 在 Powershell 4 中压缩和解压缩文件

    我使用的是 Windows Server 2012 R2 64 位 我有 powershell 版本 4 可用 我正在尝试压缩和解压缩文件 当我尝试 Write Zip 命令时 它会抛出以下错误 Write Zip 术语 Write Zip
  • 我可以根据多列删除数据库重复项吗?

    I 不久前问过这个问题 https stackoverflow com questions 4952250 how to delete duplicates from a database table based on a certain
  • Docker 中的 Web api 无法连接到主机上的 SQL Server,并出现登录前握手错误

    首先有一些类似的问题 但我已经尝试了我能找到的所有建议 但似乎没有任何效果 如果你能找到我没有提到的 请评论 我会尝试一下 概要是我正在尝试将 Docker 容器中的 NET Core 3 1 Web api 连接到主机上的 SQL Ser
  • Android 中的 java.io.FileNotFoundException

    我正在使用代码从图库中选择图像 public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView R layout
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • SQL Server 抱怨无效的 json

    我正在使用 Azure 数据工厂和 Azure SQL 数据库编写 ETL 工具 数据工厂捕获映射数据流的输出并将其作为字符串插入到 SQL Server 表 Audit OperationsEventLog 的 StatusMessage
  • ASP SQL Server 连接

  • 有没有办法设置 SQL Server 作业计划每 30 秒运行一次?

    当我尝试创建计划时 我可以选择的最短时间是 1 分钟 有没有办法将其减少到秒 这篇文章在这里SQL Server 作业调度 http www sqlservercentral com articles Administration sqls
  • 如何在VIM中设置文件的正确路径?

    每当我击中 pwd在 vim 中命令总是返回路径C Windows system32 即使我在桌面上的 Python 文件中 所以每当我跑步时 python 命令返回 python can t open file Users myname
  • SQL Server 中高效的字符串后缀搜索?

    我想找到与谓词匹配的所有行MyColumn LIKE FooBar 但通过使用索引查找而不是扫描 一种方法本质上是创建 MyColumn 的反向版本并搜索反向模式 ooF 在该列上 在反向列上有一个常规索引 然而 我不喜欢手动创建这个反向列

随机推荐

  • CSS 翻译后是否可以“捕捉到像素”?

    我创建了一个模态框并使用克里斯 科耶提到的技术 http css tricks com centering percentage widthheight elements 到目前为止 我发现的唯一问题是 有时盒子会偏移半个像素 这会让一些孩
  • 用于选择具有最后一个子值的元素的 xpath

    这是我的 xml 文件
  • MVC 项目间共享布局

    我想知道是否有一种方法可以在所有项目之间共享 layout cshtml 文件 这样 如果我想更改我们公司的页面布局 我只需在一处更改即可 从我迄今为止看到的研究来看 人们提到了可能创建 dll 文件 另外我不是在谈论 mvc 中的区域 我
  • 编译时多态性和静态绑定有什么区别?

    This https stackoverflow com questions 10580 what is early and late binding链接帮助我理解静态绑定和动态绑定之间的区别 但我很困惑 静态绑定和编译时多态性有什么区别或
  • 内存不足错误,是我的应用程序的错吗?

    我在 Android 市场上有一个应用程序 其中异常和错误由 acra 捕获并发送给我 但我收到了很多内存不足的错误 在不同类型的课程中 一些是我的应用程序 一些是通用的java 这是否总是意味着我的应用程序存在问题 或者也可能是由于其他进
  • Struts2.5 JSONInterceptor 没有填充 Action 类:

    我正在构建一个 CRUD 应用程序 使用 embers 作为客户端 struts2 作为服务器 从 ember 创建记录的 post 请求如下所示 接受 应用程序 json 文本 javascript q 0 01 接受编码 gzip de
  • Scala 中的 Drools Expert 输出对象

    我是 Scala 和 Drools Expert 的新手 需要一些帮助来从 Drools 会话中获取信息 我已经成功设置了一些由 Drools 规则操作的 Scala 类 现在我想创建一个对象来存储一组输出事实 以便在 Drools 外部进
  • 从 GeoPandas 图中重新定位图例

    I m plotting a map with legends using the GeoPandas plotting function When I plot my legends appear in the upper right c
  • 防御 XSS 攻击?

    我对 PHP 很陌生 但我听说 XSS 漏洞很糟糕 我知道它们是什么 但如何保护我的网站 为了防止 XSS 攻击 您只需正确检查和验证您计划使用的所有用户输入的数据 并且不允许从该表单插入 html 或 javascript 代码 或者您可
  • 为 Twilio-Whatsapp 电话号码上的传入消息设置 Webhook

    我们有一个支持 Whatsapp 的 Twilio 电话号码 当尝试以编程方式设置传入消息的 Webhook 时 Webhook 设置正确 但消息未通过 Whatsapp 电话号码的 Webhook 似乎位于与普通电话号码不同的位置 要手动
  • 范围内的字符类 - vim

    鉴于我有以下字符串 This is a test string string string 并尝试执行以下替换 s w substitute g 它不会出现错误 未找到模式 当我使用时 s a zA Z substitute g 有用 有没
  • 什么情况下fgetcsv返回false?

    The 文档 http php net manual en function fgetcsv php says 如果提供了无效句柄 则 fgetcsv 返回 NULL 如果出现其他错误 包括文件结尾 则返回 FALSE 除了文件结尾之外 什
  • 访问 static constexpr std::array 而不使用类外定义

    我有一个定义一些数组的类 点 hpp class Points public static constexpr std array lt double 1 gt a1 0 0 static constexpr std array lt do
  • 如何在java中生成所有可能的64位随机值?

    是否有JavaSecureRandom nextLong 返回所有可能的值 因为它继承自Random它只使用 48 位 如果没有 我仍然可以在 Java 中通过修改 Random 类来实现它吗 如何做到这一点 我只想使用一个全随机长数生成器
  • 无需刷新页面即可启用地理位置?

    目前 我们必须刷新网页 实际上PhoneGap应用程序 如果 GPS 关闭并且 通知用户后 然后打开 我们怎样才能更新GeoLocation状态无需刷新页面 应用程序 为什么不简单地使用 setInterval 每隔几秒检查一次支持
  • 在 Heroku 的生产中使用 ENV 文件

    我的配置中有以下行生产 rb环境文件 按照说明本文 https devcenter heroku com articles memcachedcloud using memcached from ruby config cache stor
  • 抽象类的复制构造函数

    我有一个名为的抽象类AClass 在同一个包中我有AnotherClass 其中我有一个ArrayList of AClass对象 在复制构造函数中AnotherClass我需要复制一份AClass里面的物体ArrayList 问题 我无法
  • 有没有用于可视化 Node.js 中模块依赖关系的库?

    作为 Node js 应用程序主要重构的一部分 走向 DDD 我正在寻找一个库 通过检查代码能够可视化不同节点模块之间的模块依赖关系 通过 要求 它们 以表格格式可视化很好 我不需要花哨的图表 有没有 Node 库 如果您也可以接受一些花哨
  • Java - 线程、Swing 和 ServerSocket

    我知道我知道 已经有一百万个关于这个问题的问题和答案无处不在 有大量关于它的非常详细的文章 以及几种类型的示例 我花了几个小时阅读有关它的内容 但这并没有解决问题 我问这个的原因是因为我仍然不明白我需要做什么 因为我的代码仍然无法工作 我了
  • Powershell 参数路径的值为 NULL

    我开发了一个 PS1 文件 它将负责基于服务器列表应用 SQL Server 补丁 因此 它将读取一个文本文件 其中包含我需要修补并应用修补程序的所有服务器 我决定使用 PARAM 作为 源文件夹 我将在其中获取服务器列表并记录输出 目标文