F#FAKE不会执行powershell脚本文件

时间:2014-12-19 05:11:57

标签: powershell f# chocolatey f#-fake

更新:问题的实际原因是'\'绕错了方向,应该是'./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是“不受限制的”

1 个答案:

答案 0 :(得分:2)

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

特别是,cd .\somedir | iex .\SomeScript.ps1是荒谬的 - 您正在管道cd$null的结果,因为cd没有返回任何内容) Invoke-Expression,基本上是说&#34;将此$ null作为脚本运行。&#34;。根本不应该Invoke-Command

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

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

或者

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