我有一些问题:如何使用下面的代码实现此活动,因为我找不到在运行空间中传递用户ID和密码的方法。
我使用下面的代码但无法传递凭据。
private static string RunScript(string scriptFile, string servername, string volume, string size,string userID,string userpassword)
{
// Validate parameters
StringBuilder stringBuilder = new StringBuilder();
try
{
if (string.IsNullOrEmpty(scriptFile))
{ throw new ArgumentNullException("scriptFile"); }
// if (parameters == null)
// { throw new ArgumentNullException("parameters"); }
RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
using (Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))
{
runspace.Open();
RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
scriptInvoker.Invoke("Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted");
Pipeline pipeline = runspace.CreatePipeline();
Command scriptCommand = new Command(scriptFile);
CommandParameter Param1 = new CommandParameter("-Server ",servername);
CommandParameter Param2 = new CommandParameter("-Volumeletter", volume);
CommandParameter Param3 = new CommandParameter("-deltasize", size);
scriptCommand.Parameters.Add(Param1);
scriptCommand.Parameters.Add(Param2);
scriptCommand.Parameters.Add(Param3);
pipeline.Commands.Add(scriptCommand);
log.Info("scriptCommand " + scriptCommand.ToString());
log.Info("scriptCommandValue Param[command] " + scriptCommand.Parameters[0].Value.ToString());
log.Info("scriptCommandValue Param[password] " + scriptCommand.Parameters[1].Value.ToString());
log.Info("scriptCommandValue Param[usename] " + scriptCommand.Parameters[2].Value.ToString());
Collection<PSObject> psObjects;
psObjects = pipeline.Invoke();
foreach (PSObject obj in psObjects)
{
stringBuilder.AppendLine(obj.ToString());
}
// Console.WriteLine(stringBuilder.ToString());
log.Info("output string : " + stringBuilder.ToString());
}
}
catch (Exception ex)
{
throw ex;
}
return stringBuilder.ToString();
}
答案 0 :(得分:0)
//尝试使用这个适用于我的样本
function getUser($abc) {
<#Previously created password file in C:\Script\cred.txt, read-host -assecurestring | convertfrom-securestring | out-file C:\Script\cred.txt#>
$password = get-content C:\Script\cred.txt| convertto-securestring
$credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist "DOMAIN\Username",$password
$output = start-process powershell -Credential $credentials -ArgumentList '-noexit','-File', 'C:\script\script2.ps1', $abc
return $output
}
[string]$abc = $args
getUser($abc)
Write-host Output is $output