【问题标题】:F# FAKE will not execute powershell script fileF# FAKE 不会执行 powershell 脚本文件
【发布时间】:2015-02-18 00:52:24
【问题描述】:

更新:问题的实际原因是 '\' 以错误的方式旋转,应该是 './GenerateNuspecFile.ps1' - F# 解析的奇怪事情。


我无法从 F# FAKE 运行 ps1 脚本文件。

问题 here 适合运行巧克力 cpack

#r "packages/FAKE.3.12.2/tools/FakeLib.dll"
#r "System.Management.Automation"
#r "System.Core.dll"

open Fake
open System.Management.Automation
...

Target "GenerateNuspecFile" <| fun _ -> 
    PowerShell.Create()
        .AddScript("Invoke-Command -ScriptBlock { cd './chocolatey' | iex .\GenerateNuspecFile.ps1 }")
        .Invoke()
        |> Seq.iter (printfn "%O")
...

这实际上并没有运行我试图运行的脚本文件。 Set-ExecutionPolicy 是“不受限制的”

【问题讨论】:

  • 您可能应该检查 Streams.Error 上的 PowerShell 对象是否有错误,但您尚未将其分配给变量。

标签: powershell f# chocolatey f#-fake f#-fake-4


【解决方案1】:

您的 powershell 脚本存在一些问题,即使从命令行运行也无法运行。

特别是,cd .\somedir | iex .\SomeScript.ps1 是无意义的 - 您将cd(即$null,因为cd 不返回任何内容)的结果传递给Invoke-Expression,这基本上是在说“运行这个 $null 作为脚本。”。 Invoke-Command 根本不需要。

如果您的目标只是运行GenerateNuSpecFile.ps1,您的脚本应该是:

.AddScript("cd '<somepath>'; .\GenerateNuspecFile.ps1")

或者

.AddScript("& '<somepath>\GenerateNuspecFile.ps1'")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    相关资源
    最近更新 更多