module/src/TestAsyncCmdlet.cs

using System;
using System.Management.Automation;
using System.Threading.Tasks;
 
namespace Cbsch.PSlib {
    [Cmdlet("Test", "Async")]
    public class TestAsyncCmdlet : AsyncSampleCmdlet {
        protected override Task ProcessRecordAsync() {
            return base.ProcessRecordAsync();
        }
 
        protected override Task BeginProcessingAsync() {
            Console.WriteLine("Starting");
            ExecuteAsync().Wait();
            Console.WriteLine("Done");
            return base.BeginProcessingAsync();
        }
 
        private async Task ExecuteAsync() {
            for (var i = 0; i < 4; i++) {
                Console.WriteLine(string.Format("Test1 {0}", i));
                WriteObject(string.Format("Test {0}", i));
                Console.WriteLine(string.Format("Test2 {0}", i));
                await Task.Delay(1);
            }
            Console.WriteLine(string.Format("Done"));
        }
    }
}