Powershell调用命令ASPX/C#与命令行

本文关键字:命令行 ASPX 调用 命令 Powershell | 更新日期: 2023-09-27 18:22:50

所以我尝试从ASPX/C#应用程序调用PS脚本。当我从命令行(PS C:'scripts> ./do-barrelRoll.ps1 -s remoteComputer)运行PS脚本时,它按预期工作。但当我使用C#时,它无法连接到远程计算机(错误的用户/密码)。有趣的事实:要使用的用户和密码位于PS脚本本身的配置部分中(请参阅$SETUP变量)!我做错了什么?

来自ASPX的准确错误消息(服务器名称正确!):

[remoteComputer] Connecting to remote server remoteComputer failed with the following error message : The user name or password is incorrect

PS脚本的相关部分:

set-alias new New-Object
$passwd = $SETUP["password"] | ConvertTo-SecureString -asplaintext -force
$session = new -TypeName System.Management.Automation.PSCredential -argumentlist $SETUP["user"], $passwd
Invoke-Command –ComputerName $PARAM["s"] -Credential $session –ScriptBlock {
    # Do a barrel roll
}

ASPX/C#应用程序的相关部分:

using System.Management.Automation;
public ActionResult doAction(string server, string action)
{
    var split = server.Split(';');
    //...
    var ps = PowerShell.Create();
    ps.AddScript("Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned -f; C:''scripts''do-barrelRoll.ps1 -s " + split[1]);
    Collection<PSObject> results = ps.Invoke();
    // Here I retrive the results and the content of the error stream and display them
}

Powershell调用命令ASPX/C#与命令行

它在命令行中按预期工作,很可能是因为您的帐户具有完全的脚本访问权限,可以运行所有内容。.NET运行的帐户应该受到更大的约束。您必须检查帐户是否有权运行不受限制的脚本。查看当地政策,然后从那里上去。您很可能不是.NET应用程序作为.

运行的同一帐户