F# FAKE не будет выполнять файл сценария powershell

Обновление: Фактическая причина проблемы заключалась в том, что '\' было неправильным путем, должно было быть './GenerateNuspecFile.ps1' - странная вещь с синтаксическим анализом F#.


Я не могу запустить файл сценария ps1 из F# FAKE.

Вопрос здесь, который хорошо работает для запуска шоколадного пакета

#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 ответ

Решение

У вашего скрипта 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'")
Другие вопросы по тегам