下面的方法启动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库的情况下执行此操作?
如果要通过执行进程从powershell检索复杂数据,那么可以在powershell对象上使用ConvertTo-Json,并使用parse it in C#
虽然看起来您正在尝试为AWS创建API密钥,但为什么不使用AWS SDK for .NET呢?
您的PowerShell管道运行newApiKey_wh1.ps1脚本,该脚本可能会返回您显示的输出。
在不知道更多关于脚本的情况下我将不得不猜测,但您应该能够在脚本返回的输出上使用Select-Object
语句,只需要您想要的值。
所以,如果脚本执行类似的操作:
return $Key
然后你可以尝试:
return ($Key | Select-Object -ExpandProperty Value)
这将只取出名为Value的属性的值。