Убедитесь, что пользователь существует в Octopus Deploy - PullRequest
1 голос
/ 11 марта 2020

Я хочу добавить пользователя в Octopus Deploy со скриптом Powershell, который работает нормально. Я хочу проверить, существует ли пользователь уже, тогда не добавляйте пользователя. Может кто-нибудь, пожалуйста, укажите, что я делаю неправильно. Он говорит, что пользователь существует, даже если он не существует. Он просматривает список пользователей, чтобы увидеть, существует ли пользователь. Я использую Invoke RestMethod для добавления пользователя, и это прекрасно работает. Я путаюсь с проверкой, если пользователь существует до того, как я его добавлю. Есть ли более простой способ сделать это?

function AddNewUser{
Param(
[string]$OctopusURL,
[string]$APIKey,
[string]$UserName = "New User"
)
$header = @{ "X-Octopus-apiKey" = $APIKey }

Write-Host "Adding user $UserName"
$userList = Invoke-RestMethod "$OctopusURL/api/users?skip=0&take=100000" -Headers $header

foreach ($user in $userList.Items){
    if ($user.UserName -eq $UserName){
        $userId = $user.Id
        return $userId          
    }
}

if ($userId -eq '') {
    Write-Host "No user called `'$UserName`' was found"
        try{
            $newUserResp = Invoke-RestMethod "$OctopusURL/api/users" -Headers $header -Method Post -Body $newUserAsJson -ContentType "application/json"
            return $newUserResp
        } catch {
             Write-Error $_
        }
    } 
else {
    Write-Host "User `'$UserName`' exists"
}

}

1 Ответ

0 голосов
/ 12 марта 2020
if ($userId -eq '') {

$ userId равен $ null, если существующий пользователь не был найден, так что это оценивается как ложное.

Ваш foreach l oop также возвращает, если пользователь найден, так что это утверждение if не похоже, что это необходимо. Если он достиг этого, вы можете предположить, что пользователь не существует (если у вас менее 100 000 пользователей).

...