以下方法启动powershell脚本并执行它
private static void LaunchPowershell()
{
string exeDir = "H:\\aws-newAPIKey";
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = @"C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe";
startInfo.Arguments = exeDir + "\\newApiKey_wh1.ps1";
startInfo.WorkingDirectory = exeDir;
Process process = new Process();
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
}
这会在命令行中产生以下输出:
CreatedDate : 1/3/2018 7:20:16 PM
CustomerId :
Description : This is api key for customer
Enabled : True
Id : qraj84yl5h
LastUpdatedDate : 1/3/2018 7:20:16 PM
Name : newAPIKey7
StageKeys : {}
Value : 2LBtWluNX1XbgtDG0SPY1IQgnVDkZTwzmgY3kd60
我想要做的是获取在C#中创建的API密钥的值。有没有办法在不使用System.Management.Autmomation库的情况下执行此操作?
答案 0 :(得分:1)
如果要通过执行进程从powershell检索复杂数据,则可以在powershell对象上使用ConvertTo-Json,并parse it in C#
虽然看起来您正在尝试为AWS创建API密钥,但为什么不使用AWS SDK for .NET?
答案 1 :(得分:1)
您的PowerShell管道运行 newApiKey_wh1.ps1 脚本,该脚本可能会返回您显示的输出。
在不了解脚本的情况下我不得不猜测,但是您应该能够在脚本返回的输出上使用Select-Object
语句来获得您想要的值。
因此,如果脚本执行类似的操作:
return $Key
然后你可以尝试:
return ($Key | Select-Object -ExpandProperty Value)
这将只提取名为值的属性的值。