【问题标题】:Reading and running Powershell file from text从文本中读取和运行 Powershell 文件
【发布时间】:2010-07-20 19:22:35
【问题描述】:

现在,我正在尝试使用 Powershell 脚本来读取文本文件并执行其中提到的所有 Powershell 脚本,但我无法获得任何结果。我试过这样指定:

Start-Job -ScriptBlock{powershell.exe -noexit $val} -name $jobnum

这样:

Start-Job -ScriptBlock{$val}

($val是文本行的值) 但它不会运行写在该行上的脚本。

我已经尝试过这种方式:

Start-Job -FilePath($val) -name $jobnum

但我收到此错误:

Start-JobFilePath 参数只允许使用 PowerShell 脚本文件。指定一个带有.ps1 扩展名的文件。

即使$val 的值是带有ps1 扩展名的文件的合法路径!

我的文本行如下所示:C:\Users\me\Desktop\notepad.ps1

如何让我的 Powershell 脚本读取文本并运行在文本中给出路径的 ps1 脚本?

【问题讨论】:

    标签: file text powershell


    【解决方案1】:

    关于

    Start-Job -ScriptBlock {powershell.exe -noexit $val} -name $jobnum
    

    你需要像这样指定-ArgumentList参数:

    Start-Job -ScriptBlock {param($v) .. your command using $v} -name $jobnum -argumentlist $val
    

    否则$value 对工作来说是未知的。

    【讨论】:

    • 谢谢!我今天早上回到程序,需要对其进行更改,以便它可以运行任何类型的脚本,而您的回答是节省了大量时间。
    • 另一个问题:为什么这不适用于使用变量的文本行,例如 $val 的值: $env:the = 50 它不应该创建环境变量并设置它等于 50?
    • 如果你设置了$env:the=50,它会在你的powershell会话中正确设置变量。但是,Start-Job 创建了一个带有自己的变量集的新进程。使用例如检查这个ProcessExplorer(来自前 SysInternals)。
    【解决方案2】:

    没关系,问题是因为我在做 -FilePath($val) 而不是 -FilePath $val。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多