我正在从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...");
        });
});

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

关于c# - 是否可以从Cake tas中调用powershell命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47515919/

10-13 06:45