public async Task TestVerboseStream() { var client = new Client(); var parameters = new Parameters(); var asyncCmdlet = new AsyncCmdlet(); await client.RunAsync("subscriptionId", parameters, asyncCmdlet); }
/// <summary> /// Note: the function must be called in the main PowerShell thread. /// </summary> /// <param name="cmdlet"></param> /// <param name="createAndStartTask"></param> public static void StartAndWait( this Cmdlet cmdlet, Func <IAsyncCmdlet, Task> createAndStartTask) { var asyncCmdlet = new AsyncCmdlet(cmdlet); string previousX = null; string previousOperation = null; asyncCmdlet.Scheduler.Wait( createAndStartTask(asyncCmdlet), () => { if (asyncCmdlet.TaskProgressList.Count > 0) { var progress = 0.0; var activeTasks = new List <string>(); foreach (var taskProgress in asyncCmdlet.TaskProgressList) { if (!taskProgress.IsDone) { var config = taskProgress.Config; activeTasks.Add(config.GetFullName()); } progress += taskProgress.GetProgress(); } var percent = (int)(progress * 100.0); var r = new[] { "|", "/", "-", "\\" }; var x = r[DateTime.Now.Second % 4]; var operation = activeTasks.Count > 0 ? "Creating " + string.Join(", ", activeTasks) + "." : null; // write progress only if it's changed. if (x != previousX || operation != previousOperation) { cmdlet.WriteProgress( new ProgressRecord( 0, "Creating Azure resources", percent + "% " + x) { CurrentOperation = operation, PercentComplete = percent, }); previousX = x; previousOperation = operation; } } }); }
internal IEnumerable <string> GetValues(AsyncCmdlet cmdlet) { if (IsSet && Value != null) { switch (Options.FirstOrDefault().Type) { case OptionType.Switch: return(new[] { ((SwitchParameter)Value).IsPresent.ToString() }); case OptionType.StringArray: return((string[])Value); case OptionType.File: return(new[] { cmdlet.ResolveExistingFilePath(Value.ToString()) }); case OptionType.Folder: return(new[] { cmdlet.ResolveExistingFolderPath(Value.ToString()) }); case OptionType.Path: return(new[] { cmdlet.ResolvePath(Value.ToString()) }); #if !CORECLR case OptionType.SecureString: return(new[] { "SECURESTRING:" + ((SecureString)Value).ToProtectedString("salt") }); #endif } return(new[] { Value.ToString() }); } return(new string[0]); }
/// <summary> /// Note: the function must be called in the main PowerShell thread. /// </summary> /// <param name="cmdlet"></param> /// <param name="createAndStartTask"></param> public static void StartAndWait( this Cmdlet cmdlet, Func <IAsyncCmdlet, Task> createAndStartTask) { var asyncCmdlet = new AsyncCmdlet(cmdlet); asyncCmdlet.Scheduler.Wait( createAndStartTask(asyncCmdlet), () => { if (asyncCmdlet.TaskProgressList.Count > 0) { var progress = 0.0; var activeTasks = new List <string>(); foreach (var taskProgress in asyncCmdlet.TaskProgressList) { if (!taskProgress.IsDone) { var config = taskProgress.Config; activeTasks.Add(config.Name + " " + config.Strategy.Type); } progress += taskProgress.GetProgress(); } var percent = (int)(progress * 100.0); var r = new[] { "|", "/", "-", "\\" }; var x = r[DateTime.Now.Second % 4]; cmdlet.WriteProgress( new ProgressRecord( 0, "Creating Azure resources", percent + "% " + x) { CurrentOperation = activeTasks.Count > 0 ? "Creating " + string.Join(", ", activeTasks) + "." : null, PercentComplete = percent, }); } }); }
internal IEnumerable<string> GetValues(AsyncCmdlet cmdlet) { if (IsSet && Value != null) { switch (Options.FirstOrDefault().Type) { case OptionType.Switch: return new[] { ((SwitchParameter)Value).IsPresent.ToString() }; case OptionType.StringArray: return (string[])Value; case OptionType.File: return new[] { cmdlet.ResolveExistingFilePath(Value.ToString()) }; case OptionType.Folder: return new[] { cmdlet.ResolveExistingFolderPath(Value.ToString()) }; case OptionType.Path: return new[] { cmdlet.ResolvePath(Value.ToString()) }; #if !CORECLR case OptionType.SecureString: return new[] { "SECURESTRING:" + ((SecureString)Value).ToProtectedString("salt") }; #endif } return new[] { Value.ToString() }; } return new string[0]; }
/// <summary> /// Note: the function must be called in the main PowerShell thread. /// </summary> /// <param name="cmdlet"></param> /// <param name="createAndStartTask"></param> public static void StartAndWait(this Cmdlet cmdlet, Func <IAsyncCmdlet, Task> createAndStartTask) { var asyncCmdlet = new AsyncCmdlet(cmdlet); asyncCmdlet.Scheduler.Wait(createAndStartTask(asyncCmdlet)); }