使用powershell编写新powershell窗口脚本?

使用powershell编写新powershell窗口脚本?,powershell,automation,Powershell,Automation,我想自动启动powershell并从另一个powershell运行一些命令(由于函数的优点,我想从另一个powershell启动它)。 我之所以这么做是因为我正在用powershell测试一个用C#编码的*.dll,我必须不断地启动和退出powershell,因为无法在powershell中卸载dll,因此无法用它的类重新加载库 有没有一种方法可以像office中的com对象自动化一样自动化powershell?只使用脚本或脚本块怎么样 powershell { Add-Type foo.

我想自动启动powershell并从另一个powershell运行一些命令(由于函数的优点,我想从另一个powershell启动它)。
我之所以这么做是因为我正在用powershell测试一个用C#编码的*.dll,我必须不断地启动和退出powershell,因为无法在powershell中卸载dll,因此无法用它的类重新加载库


有没有一种方法可以像office中的com对象自动化一样自动化powershell?

只使用脚本或脚本块怎么样

powershell {
   Add-Type foo.dll
   [Foo]::DoSomething();
}
应该有用

如果您需要交互性并且需要随意尝试多个命令,可以使用

powershell -noexit { Add-Type foo.dll }
在这种情况下,至少可以更改提示颜色,以便知道您是在测试子shell中还是在父shell中:

function Test-DLL {
  powershell -noexit {
    function prompt {
      Write-Host -n -fore yellow "Test $PWD>"
      ' '
    }

    Add-Type foo.dll
  }
}
我也倾向于用以下方式定义一个小函数:

"function $([char]4) { exit }" | Invoke-Expression

这使我可以使用Ctrl+D,Enter关闭PowerShell(与Unix Shell有一半相似)。

只使用脚本或脚本块怎么样

powershell {
   Add-Type foo.dll
   [Foo]::DoSomething();
}
应该有用

如果您需要交互性并且需要随意尝试多个命令,可以使用

powershell -noexit { Add-Type foo.dll }
在这种情况下,至少可以更改提示颜色,以便知道您是在测试子shell中还是在父shell中:

function Test-DLL {
  powershell -noexit {
    function prompt {
      Write-Host -n -fore yellow "Test $PWD>"
      ' '
    }

    Add-Type foo.dll
  }
}
我也倾向于用以下方式定义一个小函数:

"function $([char]4) { exit }" | Invoke-Expression

这使我可以使用Ctrl+D关闭PowerShell,输入(半个模拟Unix shell)。

也许不是最优雅的解决方案,但应该这样做(我不是PS专业人士):


也许不是最优雅的解决方案,但应该这样做(我不是PS专业人士):


我确实使用添加类型。但是有两个问题:powershell会锁定库,并且无法使用[Reflection.Assembly]重新加载库(我不知道这是否适用于add type,因为锁定后我无法重新编译dll)。我很抱歉。我不知道您运行的是powershell,而不是名为powershell;的函数)它起作用了。即使在powershellISE中,我也可以轻松修改命令。谢谢:)关键是您启动另一个加载库的shell,并在完成测试后关闭它。我的尝试是尽可能轻松地启动子shell(加载库)和一些测试步骤。但是有两个问题:powershell会锁定库,并且无法使用[Reflection.Assembly]重新加载库(我不知道这是否适用于add type,因为锁定后我无法重新编译dll)。我很抱歉。我不知道您运行的是powershell,而不是名为powershell;的函数)它起作用了。即使在powershellISE中,我也可以轻松修改命令。谢谢:)关键是您启动另一个加载库的shell,并在完成测试后关闭它。我的尝试是使子shell的启动(加载库)和可选的一些测试步骤尽可能轻松。我知道这种方法,但我不能用它将命令传递给新的powershell实例。+1传递命令对我来说是这样的:cmd/c start powershell.exe-nologo-noexit-command“cd c:\mydir”(我在上面更新过)我知道这种方式,但我不能用这种方式将命令传递给新的powershell实例。+1传递命令对我来说是这样的:cmd/c start powershell.exe-nologo-noexit-command“cd c:\mydir”(我在上面更新过)