Я хочу запустить свою виртуальную машину из сценария C#, если я попытаюсь сделать это из PowerShell (версия 5.1.18362.752), он заработает, я поставлю первую команду
Import-AzureRmContext -Path "C:\Program Files(x86)\WindowsPowerShell\azureprofile.json"
, а затем вторая команда
$PowerState = ((Get-AzureRmVM -Name Janusz -ResourceGroupName Inzynierska -Status).Statuses[1]).code
If ( $PowerState -contains "PowerState/running")
{
Write-Host "PowerState1: running"
}
ElseIf ( $PowerState -contains "PowerState/deallocated")
{
Start-AzureRmVM -Name Janusz -ResourceGroupName Inzynierska
$PowerState = ((Get-AzureRmVM -Name Janusz -ResourceGroupName Inzynierska -Status).Statuses[1]).code
}
Write-Host "PowerState2: $PowerState"
, но если я попытаюсь сделать это в C#. Net Core, Visual Studio это не работает
static void Main(string[] args)
{
using (PowerShell PowerShellInstance = PowerShell.Create())
{
string text = System.IO.File.ReadAllText(@"C:\Users\Krute\Desktop\Inżynierka\PowerShellScriptRunning\FirstScript.txt");
PowerShellInstance.AddScript(text);
IAsyncResult result = PowerShellInstance.BeginInvoke();
while (result.IsCompleted == false)
{
Console.WriteLine("Pierwsze Zapytanie");
Thread.Sleep(1000);
}
}
using (PowerShell PowerShellInstance1 = PowerShell.Create())
{
string text1 = System.IO.File.ReadAllText(@"C:\Users\Krute\Desktop\Inżynierka\PowerShellScriptRunning\SecondScript.txt");
PowerShellInstance1.AddScript(text1);
IAsyncResult result = PowerShellInstance1.BeginInvoke();
while (result.IsCompleted == false)
{
Console.WriteLine("Drugie Zapytanie");
Thread.Sleep(1000);
}
Console.WriteLine("Finished!");
}
Console.Read();
Я проверяю, что находится внутри text и text1 и скрипт читается правильно. Может ли кто-нибудь объяснить мне, что не так с моим кодом или почему он не работает? и что я могу сделать, чтобы запустить этот сценарий PowerShell из C#?
Спасибо