
The Read-Host cmdlet performs two functions in a PowerShell script it pauses execution and receives input.

Let’s see some real-world applications on how we can use the Read-Host PowerShell cmdlet. The do-until loop will exit at this point.Using the Read-Host PowerShell cmdlet, you can interactively prompt for input from the script user. This object then gets cast to boolean, which will evaluate to $true due to it not being one of the aforementioned values. If Get-ADUser finds an object then $Manager will contain that user object. Given that the statement in ( ) evaluated to $false, the loop continues on. This then gets cast to boolean, which evaluates to $false.

In this particular case, if Get-ADUser does not return an object then $Manager will be $null. When PowerShell casts a value to boolean 0, $null, $false, and an empty string all evaluate to $false. The way that do-until loops ( as well as if-then blocks and the like ) work is they cast the statement ( ) to boolean. If it errors out then $Manager will be $null. No, that line, if successful, will contain an AD user object. $Manager = get-aduser $input -ErrorAction Stop Given that Get-ADUser throws an error when the value provided to its -Identity parameter is invalid, the catch block will get triggered if the account provided for the manager is invalid.

In this particular case, the error action of Stop causes Get-ADUser to throw a terminating error if it encounters any error, which a try-catch block requires. It is a common parameter ( parameters that are available on most, if not all, cmdlets ) that controls how PowerShell will respond to an error coming from that cmdlet.
