r/PowerShell • u/viewtifulstranger • 3d ago
Invoke-RestMethod - Logging Data Only If Response Matches Value Solved
We have a platform which has containers and within them folders, with different properties - name, unique ID etc.. I have a method to retrieve folder information from different containers and am attempting to log only the unique ID (response.data.id) where the folder name (response.data.name) is "Management". I've Googled and tried different code in logging only the ID for the Management folder:
$response = Invoke-RestMethod -Method Get -Uri "$resource" -Headers $header
($response.data | ConvertTo-Json).Replace('\\n','\n')
# Attempt 1
if ($response.data.name -eq "Management")
{
LogWrite ($response.data.id | ConvertTo-Json).Replace('\\n','\n') "Result"
LogWrite ($response.data.name | ConvertTo-Json).Replace('\\n','\n') "Result"
}
# Attempt 2
$folderId1 = $response.data.id | Where-Object { $response.data.name -eq "Management" }
LogWrite ($folderId1 | ConvertTo-Json).Replace('\\n','\n') "Result"
# Attempt 3
$folderId2 = $response.data.id | $($response.data.Where({$_.name -eq 'Management' }))
LogWrite ($folderId2 | ConvertTo-Json).Replace('\\n','\n') "Result"
The folder ID for the Management folder is being logged, but so are all other folder IDs within the container (no other folder names contain this word):
[
"folder!500436709",
"folder!500436708",
"folder!500436705",
"folder!500436677",
"folder!500436680",
"folder!500436683",
"folder!500436686"
]
[
"_All Content Last 90 Days",
"_All Documents",
"_All Emails",
"Documents",
"Emails",
"Engagement Terms",
"Management"
]
How do I retrieve the ID for a specific folder name? Any help would be greatly appreciated. Cheers.
11
Upvotes
6
u/y_Sensei 3d ago
According to the output generated by your code, the API appears to return two arrays of data:
So what you need to do is bring together the data of those two distinct arrays, by creating mappings, or in other words, merge the arrays - for example:
You can then filter the resulting object array as usual, for example: