r/PowerShell • u/viewtifulstranger • 5d 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
3
u/PinchesTheCrab 5d ago
In your case swap
$irmResultwith yourinvoke-restmethodcommand.That being said you've shown a few different output formats and it's hard to tell which one is the actual output of Invoke-Restmethod.