Skip to content

Instantly share code, notes, and snippets.

Last active April 5, 2019 21:02
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
Author: I. Strachan
Version: 1.0
Version History:
Purpose: Get az devops projects wrapper
Function Get-AzDevOpsProject{
[Parameter(Position = 0, HelpMessage = "Enter a azure devops project name", ParameterSetName = "name")]
[Parameter(HelpMessage = "Show project properties", ParameterSetName = "name")]
[Parameter(HelpMessage = "Get all azure devops projects", ParameterSetName = "all")]
Begin {
Write-Verbose "[BEGIN ] Starting: $($MyInvocation.Mycommand)"
#define a class for my az devops objects
Class myDevOpsProjects {
[String] $Name
[String] $Description
[String] $Id
[Int] $Revision
[String] $Visibility
myDevOpsProjects ($Name) {
$psObject = az devops project show -p $Name | ConvertFrom-Json
$this.Name = $Name.replace('"', '')
$this.Description = $psObject.Description
$this.Id = $psObject.Id
$this.Revision = $psObject.Revision
$this.Visibility = $psObject.Visibility
static [PSObject]show($Name){
$psObject = az devops project show -p $Name | ConvertFrom-Json
return $psObject
Process {
$arrProjectNames = az devops project list --query '[].name' | ConvertFrom-Json
if ($all) {
Write-Verbose "[PROCESS] Getting all projects"
$names = $arrProjectNames
Write-Verbose "[PROCESS] Getting project $($name -join ', ')"
$names = $Name
foreach ($name in $names) {
Write-Verbose "[PROCESS] Processing $name"
if ($arrProjectNames -contains $name) {
if ($show){
Write-Verbose "[PROCESS] Showing project properties $name"
Write-Warning "Failed to find a project named $name"
End {
Write-Verbose "[END ] Ending: $($MyInvocation.Mycommand)"
Get-AzDevOpsProject -All -Verbose
Copy link

The only thing you are missing is some error handling. You could add a #requires -module statement in the file,

Copy link

irwins commented Apr 5, 2019

Yeah... And esteemed colleague pointed that out to me.... 😉

Try/Catch didn't catch any errors, that's why I opted for show/query solution... I am curious though how to go about doing proper error-handeling for exe... $LastExitCode or $?

I feel a teachable moment coming on... 😃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment