Refactor; use .NET classes where possible

The reason I used `invoke-expression` is that I don't know what to how to invoke `run.ps1` when `$remainingArgs` is a string. For example, when $remainingArgs = "-async"
```
& "C:\st\Data\Packages\UnitTesting\sbin\run.ps1" $remainingArgs "UnitTesting" -verbose
```
produce an error, since `run.ps1` is expecting
```
& "C:\st\Data\Packages\UnitTesting\sbin\run.ps1" -async "UnitTesting" -verbose
```