Я все еще новичок в Powershell и не смог ничего найти по этому поводу. Я выполняю запрос REST GET на URI, который, как я знаю, возвращает 404 с сервера, поскольку ресурс не найден.
Я хотел бы иметь возможность запустить условное выражение, которое проверяет, является ли это 404, и пропустить его для дальнейшей обработки, если это так, однако, когда я назначаю запрос переменной, а затем вызываю его, он просто дает мне содержание того, что мой запрос был. Я никогда не видел ничего подобного на других языках ...
Моя основная предпосылка заключается в следующем. Сначала я выбираю все имена групп, затем перебираю этот массив имен, включаю текущее в новый URL и делаю дополнительный запрос для этой конкретной группы, которая ищет SHIFT, который всегда будет иметь одно и то же имя. Если у группы нет этого сдвига по имени, я хочу перейти к следующей группе, в противном случае изменим некоторые атрибуты этого вновь найденного объекта сдвига.
Вот как выглядит мой код, поскольку вы можете видеть, что он работает неправильно
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$user = '******'
$pass = ConvertTo-SecureString '*******' -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $pass
$req = Invoke-WebRequest -Credential $cred -Uri https://********-np.xmatters.com/api/xm/1/groups
$res = ConvertFrom-Json $req.Content
$content = $res.data
$base = "https://********-np.xmatters.com/api/xm/1/groups"
$group_name = $content[0].targetName
$path = "$base/$group_name/shifts/MAX-Default Shift"
$shift = Invoke-RestMethod -Credential $cred -Uri $path
Write-Host '-----------------------'
Write-Host $shift
Write-Host '-----------------------'
... RESPONSE BELOW ....
Invoke-RestMethod : The remote server returned an error: (404) Not Found.
At \\MMFILE\********$\MyDocuments\Group Supers PReliminary.ps1:16 char:10
+ $shift = Invoke-RestMethod -Credential $cred -Uri $path
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
-----------------------
@{id=***********; group=; name=MAX-Default Shift; description="; start=2018-08-21T04:00:00.000Z; end=2018-08-22T04:00:00.000Z; timezone=America/New_York; recurrence=;
links=}
-----------------------
PS C:\WINDOWS\system32>
То, что я хотел бы сделать, это что-то вроде в сокращенном коде, if $shift.code == 404 ... skip ... else ... run additional query