PowerShell 7 brought the Update-List CmdLet back and i was curious what it does (Psssst !!! – i never used it before either …).
See the below example based on a simple PSObject with 3 list-type properties and identify the value of Update-List.
Environment: PowerShell 7-RC1, Windows 64-Bit
The Sample Data

First of all – with Update-List you are able to manipulate object properties which are list-type. It is not possible to manage list-type objects themself. With this in mind (ok, i did read the documentation) i created a sample object as shown above.
Step 1 – Create the lists
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # Create Lists - 3 ways, same results $names = New-Object System.Collections.Generic.List[string]] $names.Add("Anna") $names.Add("Bob") $names.Add("Charlie") $cities = [System.Collections.Generic.List[string]]::New() $cities.Add("Vienna") $cities.Add("Munic") $cities.Add("Zurich") $jobs = [System.Collections.Generic.List[string]]::New() [string[]]$jobrange = 'Admin','Sales','Engineer'  $jobs.AddRange($jobrange) | 
Step 2 – Create the data object with lists as properties
| 1 2 3 4 5 6 7 8 | # Create Hashtable with lists $data = @{     Names = $names     Cities = $cities     Jobs = $jobs } # Create PS Object $people = New-object psobject -Property $data | 
Now we can look into our object and explorer it.
| 1 2 3 4 5 6 | Cv-C:> $people Cities                  Jobs                     Names ------                  ----                     ----- {Vienna, Munic, Zurich} {Admin, Sales, Engineer} {Anna, Bob, Charlie} | 
Step 3 – Manipulate a list
Now lets do some data manipulation and add a list-entry called „Eric“ to the names property.
| 1 2 3 4 5 6 7 8 9 10 11 | Cv-C:> Update-List -InputObject $people -Property Names -Add 'Eric' Cities                  Jobs                     Names ------                  ----                     ----- {Vienna, Munic, Zurich} {Admin, Sales, Engineer} {Anna, Bob, Charlie, Eric} Cv-C:\Users\roman.THEGALAXY> $people.Names Anna Bob Charlie Eric | 
Removing an entry is also possible with -Remove parameter.
| 1 2 3 4 | Cv-C:> Update-List -InputObject $people -Property Names -Remove 'Anna'|Select-Object -Expandproperty Names Bob Charlie Eric | 
Step 4 – Replacing a whole property
Lets say we want to get rid of the entries in the „cities“ property and replace them with new values. See below.
| 1 2 3 4 5 6 7 8 9 10 11 12 | Cv-C:> # Replace by creating a new list object $uscities = [System.Collections.Generic.List[string]]::New() $uscities.Add("New York") $uscities.Add("Chicago") $uscities.Add("Seattle") $uscities.Add("Dallas") # and later on replace cities with uscities Update-List -InputObject $people -Property cities -Replace $uscities |Select-Object Cities Cities ------ {New York, Chicago, Seattle, Dallas} | 
Summary
Update-List makes it very easy to modify list-type properties in existing PSOjects with its Add-, Remove- and Replace- capability.
Have fun using it !
R.

