none
Invoke Powershell using Visual Studio (C#) to search AD User RRS feed

  • Question

  • Hi,

    I managed to get the test ASPX page I was creating working which can show services and their state.

    The only issue I'm facing now is that when I type in a username to search and click search the page is supposed to execute the powershell script to Import the AD module and search based on what is input as the username.

    Below is my Default.aspx.cs page code:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Management.Automation;
    using System.Text;
    
    namespace PowerShellExecution
    {
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
        protected void ExecuteCode_Click(object sender, EventArgs e)
        {
            // Clean the Result TextBox            
            ResultBox.Text = string.Empty;
    
            // Initialize PowerShell engine            
            var shell = PowerShell.Create();
    
            // Add the script to the PowerShell object            
            shell.Commands.AddScript(Input.Text);
            shell.Commands.AddCommand("Import-Module").AddArgument("ActiveDirectory");
            shell.Invoke();
    
    
    shell.Commands.AddScript(Input.Text);shell.Commands.AddScript("C:\\Temp\\Test.ps1");
    
            // Execute the script            
            var results = shell.Invoke();
    
            // display results, with BaseObject converted to string            
            // Note : use |out-string for console-like output            
    
            if (results.Count > 0)
            {
    
                // We use a string builder ton create our result text                
                var builder = new StringBuilder();
    
                foreach (var psObject in results)
                {
                    // Convert the Base Object to a string and append it to the string builder.                    
                    // Add \r\n for line breaks                    
                    builder.Append(psObject.BaseObject.ToString() + "\r\n");
                }
    
                // Encode the string in HTML (prevent security issue with 'dangerous' caracters like < >                
                ResultBox.Text = Server.HtmlEncode(builder.ToString());
            }
        }
    }
    

    }

    Here is my Powershell Script:

    $UserPrompt = Read-Host "Enter Username"
    Get-ADUser $UserPrompt * | Select Name,SamAccountName
    

    Am I completely missing something?

    Thanks

    Saturday, June 16, 2018 6:19 AM

All replies