通过启动过程传递变量的Powershell问题

Posted

技术标签:

【中文标题】通过启动过程传递变量的Powershell问题【英文标题】:Powershell Problem with passing Variables through Start-Process 【发布时间】:2021-03-01 16:42:49 【问题描述】:

我正在处理的新脚本有问题。 该脚本包含一个命令,我想在其中执行另一个带有参数的程序, 由本程序支持。 首先,我将从 PowerShell 脚本获取输入并将其保存到变量中,而不是 将这些变量放入启动过程的参数列表中,以使其通过程序。 但这并不像我想要的那样工作。 我总是看到程序写了一个日志,它将变量写为 Name 而不是变量内部的内容。 我尝试了不同的方法,但它不想工作。这是带有一些测试变量的代码:

 $goal = "dlr-1-ws240"
 $newdate = (Get-Date).AddDays(7) | Get-Date -Format "yyyy-MM-dd-12-00-00"
 $adminurl = "w10_lgrm.admin_" + $goal + "_b"
 $newmember = $env:USERNAME + ":" + $newdate
 $argulist = "-o AddMembers -service $adminurl -members $newmember"

 Start-Process "C:\Cometo V.2.5\Bin\CometClient.exe" -Argumentlist -o AddMembers -service $adminurl -members $newmember /log

它总是将 $newmember 检测为名称“$newmember”,而不是其内部。

感谢您的每一次帮助。谢谢

【问题讨论】:

ArgumentList 不是这样工作的。请参阅docs 的正确示例。您现在正在传递一个脚本块 ,它被翻译成一个字符串。 非常感谢,我没有看到这个“小”错误,但它确实解决了所有问题。 【参考方案1】:
&
    param(
        [int]$packageCount,
        [string]$hostName
    )

Start-Process "ping.exe" -ArgumentList "$hostName -n $packageCount"
 -packageCount 10  -hostName "google.com"

【讨论】:

以上是关于通过启动过程传递变量的Powershell问题的主要内容,如果未能解决你的问题,请参考以下文章

将当前时间分配给powershell变量

通过命令行将变量传递给powershell脚本

如何在PowerShell中更改环境变量并启动应用程序

使用Powershell脚本启动的批处理文件设置环境变量

通过 PowerShell 更改 DCOM 对象权限后要重新启动啥?

通过 PowerShell 的 DCOM 机器级访问和启动权限