【问题标题】:c#.net remote powershell for iisc#.net 用于 iis 的远程 powershell
【发布时间】:2017-03-22 02:41:35
【问题描述】:

您好,我有以下代码

 //set up exchange server name
        var Exchangesrv = "ex1.iah.ac.uk";


        // Initialize PowerShell engine
        var shell = PowerShell.Create();

        // Add the script to the PowerShell object
        shell.Commands.AddScript("Invoke-Command -Computername hostname.example.com -ScriptBlock{get-alias}");

        // Execute the script
        var results = shell.Invoke();


        Input.DataSource = results;
        Input.DataBind();

非常简单,我想调用一个 power shell 命令,“输入”是我正在填充的列表框对象

但是当我在 IIS 服务器上运行它时它不起作用,我认为这是因为 IIS 应用程序没有使用我试图运行命令的远程服务器上的管理员帐户运行。任何人都可以帮助解决这个问题。如何让网页使用正确的凭据调用此调用命令?

编辑
所以我决定在 web 服务器上创建一个配置文件,这意味着当我使用的帐户打开 power-shell 时,交换模块被加载。但是使用以下代码时我看不到这种加载

using (var powershell = PowerShell.Create())
        {
            //powershell.Runspace = runspace;


            // Add the script to the PowerShell object
            //powershell.AddScript("Get-alias");
            powershell.AddScript("Get-DynamicDistributionGroup");


            // Execute the script
            var results = powershell.Invoke();


            Input.DataSource = results;
            Input.DataBind();

所以应该发生的是电源外壳在 Web 服务器上本地运行,但我需要它来加载配置文件但是我不明白它为什么不这样做。是否有命令强制它加载模块。

【问题讨论】:

  • 嗯,首先要做的事情是正确登录,这样您就知道为什么它失败了,而不仅仅是假设。其次,如果是因为权限不足(我同意这可能是一个问题),那么您可以 impersonate as a different user 只为那部分代码。或者,Invoke-Command 有一个 -Credential 参数,也可用于模拟。
  • 您好,抱歉,我已开启登录 IIS,但在日志文件中没有看到任何相关内容。
  • 抱歉 - 我的意思是您应该将日志消息添加到您的 应用程序,通常使用像 Log4Net 这样的库,以确保您可以准确诊断此问题和未来的问题。 IIS 日志记录旨在告诉您 HTTP 调用,而不是应用程序处理。
  • 嗨,这似乎是远程加载交换电源外壳管理单元的问题,因为它一直告诉我它不存在。
  • 我想我需要这个“New-PSSession -ConfigurationName Microsoft.Exchange”,但我不知道我是如何将它包含在我的代码中的

标签: c# .net powershell iis


【解决方案1】:

应用程序池的属性是“加载用户配置文件”。这必须设置为 True。

我无法告诉任何人这是为什么,但它解决了我的访问被拒绝问题。

更多关于这里的财产:https://blogs.msdn.microsoft.com/vijaysk/2009/03/08/iis-7-tip-3-you-can-now-load-the-user-profile-of-the-application-pool-identity/

【讨论】:

    【解决方案2】:

    最后,模拟和调用没有成功(我本可以使用调用,但我不想在代码中使用凭据)

    我发现我必须更改应用程序池上的属性,然后它才能正常工作。

    【讨论】:

    • 把它们改成什么?
    猜你喜欢
    • 2017-10-29
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 2012-10-25
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多