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'")