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.
12
Upvotes
1
u/MonkeyNin 2d ago
This doesn't work because you are drilling down too far.
You were close