F#FAKE将不执行Powershell脚本文件

F# FAKE will not execute powershell script file

更新:问题的实际原因是\\'\\\\\\\\\\'绕错了方向,应该是\\'。/GenerateNuspecFile.ps1 \\'-F#解析很奇怪。

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

此处的问题对于运行巧克力状cpack效果很好

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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为" unrestricted "


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

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

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

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

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