是否可以从 Cake 任务中调用 powershell 命令

Is it possible to call powershell command from within Cake task

我正在从 Psake 构建工具切换到 Cake (https://cakebuild.net/)。我正在为具有(当前)9 种不同部署的相当大的解决方案(30 多个项目)创建脚本。 在 Psake 中,调用 PowerShell 命令很简单,因为整个脚本在 powershell 中已经 运行。

但是现在我遇到了一个问题。我必须在 PS 中调用一些 运行 的命令,但我找不到执行它们的方法。

一些示例:

taskkill /IM iisexpress.exe
Invoke-Command -ComputerName <testing server> -ScriptBlock {import-module WebAdministration; Stop-Website <'name of website'>}
Invoke-Command -ComputerName <testing server> -ScriptBlock {import-module WebAdministration; Start-Website <'name of website'>}

我已经尝试使用 StartAndReturnProcess(示例:StartAndReturnProcess("taskkill /IM iisexpress.exe");),但没有成功。我还找到了 Cake.IIS 插件,它可能会解决我在启动和停止 IIS 方面的问题,但还有一些我想调用的其他 PS 命令。

是否可以从 Task 中简单地调用 PowerShell 命令? 像这样:

Task("DoSomeMagic")
    .Does(() =>
{

    ExecutePowerShellCommad("taskkill /IM iisexpress.exe");
    ExecutePowerShellCommad("Invoke-Command -ComputerName <testing server> -ScriptBlock {import-module WebAdministration; Stop-Website <'name of website'>}");

    //ToDo: other magic
});

感谢您的回答和最诚挚的问候, 马丁

你见过 Cake.PowerShell 插件吗?

可以找到示例用法 here,但要提供示例(取自自述文件):

#addin "Cake.Powershell"

Task("Powershell-Script")
    .Description("Run an example powershell command with parameters")
    .Does(() =>
{
    StartPowershellScript("Write-Host", args =>
        {
            args.AppendQuoted("Testing...");
        });
});

自述文件中有更复杂的示例,具体取决于您要实现的目标。