1

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


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

这里的问题适用于运行巧克力 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 是“不受限制的”

4

1 回答 1

2

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

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

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

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

或者

.AddScript("& '<somepath>\GenerateNuspecFile.ps1'")
于 2014-12-21T16:53:14.863 回答