C#通过代码调用PowerShell

C#通过代码调用PowerShell

示例代码

var userId = "MyAccount@XXXXX.partner.onmschina.cn";
var tenantId = "XXXXX-ca13-4bcb-840d-d3c1638f63b1";
var tenantDomain = "XXXX.partner.onmschina.cn";
var subscriptionId = "XXXXXX-1fb0-4df7-8737-11b8d6bf88ed";
var subscriptionName = "ZS0_Sub_OTR";
    
WindowsAzure.Commands.Common.AzureRmProfileProvider.Instance.Profile = new AzureRMProfile("D:\\XXXX.json");
var azureAccount = new AzureAccount() { Id = userId, Type = AzureAccount.AccountType.User };
var env = AzureEnvironment.PublicEnvironments["AzureChinaCloud"];
var subscript = new AzureSubscription() { Id = Guid.Parse(subscriptionId), Name = subscriptionName };
var azureContext = new AzureContext(subscript, azureAccount, env, new AzureTenant { Domain = tenantDomain, Id = Guid.Parse(tenantId) });
WindowsAzure.Commands.Common.AzureRmProfileProvider.Instance.Profile.Context = azureContext;
WindowsAzure.Commands.Common.AzureRmProfileProvider.Instance.Profile.Save();
    
    
    
System.Management.Automation.PowerShell ps = System.Management.Automation.PowerShell.Create(System.Management.Automation.RunspaceMode.NewRunspace);
ps.Commands.Clear();
ps.AddCommand("Login-AzureRmAccount");
ps.Commands.Commands[ps.Commands.Commands.Count - 1].Parameters.Add("-EnvironmentName", "AzureChinaCloud");
var objs = ps.Invoke();
foreach (var item in objs)
{
    Console.WriteLine(item);
}
ps.Commands.Clear();
ps.Commands.AddCommand("Set-AzureRmContext");
ps.Commands.Commands[ps.Commands.Commands.Count - 1].Parameters.Add("-SubscriptionName", "ZS0_Sub_OTR");
var sub = ps.Invoke();
    
//ps.Commands.Clear();
//ps.Commands.AddCommand("Save-AzureRmProfile");
//ps.Commands.Commands[ps.Commands.Commands.Count - 1].Parameters.Add("-Path", "D:\\XXXX.json");
//sub = ps.Invoke();
    
ps.Commands.Clear();
ps.Commands.AddCommand("Get-AzureRmKeyVault");
ps.Commands.Commands[ps.Commands.Commands.Count - 1].Parameters.Add("-VaultName", "SxzKeyVault");
    
var result = ps.Invoke();
    
ps.Commands.Clear();
ps.Commands.AddCommand("New-AzureRmKeyVault");
ps.Commands.Commands[ps.Commands.Commands.Count - 1].Parameters.Add("-VaultName", "SxzKeyVault3");
ps.Commands.Commands[ps.Commands.Commands.Count - 1].Parameters.Add("-ResourceGroupName", "YungoalTest");
ps.Commands.Commands[ps.Commands.Commands.Count - 1].Parameters.Add("-Location", "ChinaNorth");
    
result = ps.Invoke();


C#通过代码调用PowerShell
https://www.dearcloud.cn/2016/12/21/20200310-cnblogs-old-posts/20161221-CSharp通过代码调用PowerShell/
作者
宋兴柱
发布于
2016年12月21日
许可协议