将参数传递给 PowerShell 脚本的文件路径
Passing the argument to the file path of PowerShellScript
尝试在通过 C# 函数执行时将参数或参数列表传递给 PowerShell 脚本路径。
我正在使用 C# 函数通过使用 System.Management.Automation 库调用 powershell 命令的函数从我的脚本中获取详细信息列表。我正在传递文件路径,因此脚本在不需要任何参数时工作得很好,但是当我需要传递它们时,它会给出用户未处理的异常。
scriptPath 变量中的值:
C:\Users\<username>\source\repos\MyProject\Shell\Get-SDC.ps1 'Test - Group'
我的函数:
private string PowerShellExecutorStr(string scriptPath)
{
string outString = "";
var shell = PowerShell.Create();
shell.Commands.AddCommand(scriptPath);
var results = shell.Invoke();
if (results.Count > 0)
{
var builder = new StringBuilder();
foreach (var psObj in results)
{
builder.Append(psObj.BaseObject.ToString() + "\r\n");
}
outString = Server.HtmlEncode(builder.ToString());
}
shell.Dispose();
return outString;
}
脚本:
param($GroupName)
<Get-ADGroup Command to fetch Details of the Group using $GroupName as Parameter>
outString 需要在参数传递给它时获取 PowerShell 脚本的输出。
var shell = PowerShell.Create();
shell.Commands.AddCommand(scriptPath)
.AddParameter("ParamName", "ParamValue");
var results = shell.Invoke();
以上等同于以下 PowerShell:
PS> scriptPath -ParamName ParamValue
我通过 Archer 的 link 找到的另一种方法是添加参数
private string PowerShellExecutorStr(string script, string arg)
{
string outString = "";
var shell = PowerShell.Create();
shell.Commands.AddCommand(script);
shell.Commands.AddArgument(arg); // <----- Using this statement
var results = shell.Invoke();
……rest of the code
}
尝试在通过 C# 函数执行时将参数或参数列表传递给 PowerShell 脚本路径。
我正在使用 C# 函数通过使用 System.Management.Automation 库调用 powershell 命令的函数从我的脚本中获取详细信息列表。我正在传递文件路径,因此脚本在不需要任何参数时工作得很好,但是当我需要传递它们时,它会给出用户未处理的异常。
scriptPath 变量中的值:
C:\Users\<username>\source\repos\MyProject\Shell\Get-SDC.ps1 'Test - Group'
我的函数:
private string PowerShellExecutorStr(string scriptPath)
{
string outString = "";
var shell = PowerShell.Create();
shell.Commands.AddCommand(scriptPath);
var results = shell.Invoke();
if (results.Count > 0)
{
var builder = new StringBuilder();
foreach (var psObj in results)
{
builder.Append(psObj.BaseObject.ToString() + "\r\n");
}
outString = Server.HtmlEncode(builder.ToString());
}
shell.Dispose();
return outString;
}
脚本:
param($GroupName)
<Get-ADGroup Command to fetch Details of the Group using $GroupName as Parameter>
outString 需要在参数传递给它时获取 PowerShell 脚本的输出。
var shell = PowerShell.Create();
shell.Commands.AddCommand(scriptPath)
.AddParameter("ParamName", "ParamValue");
var results = shell.Invoke();
以上等同于以下 PowerShell:
PS> scriptPath -ParamName ParamValue
我通过 Archer 的 link 找到的另一种方法是添加参数
private string PowerShellExecutorStr(string script, string arg)
{
string outString = "";
var shell = PowerShell.Create();
shell.Commands.AddCommand(script);
shell.Commands.AddArgument(arg); // <----- Using this statement
var results = shell.Invoke();
……rest of the code
}