Powershell 验证八达通部署中是否存在用户

Powershell 验证八达通部署中是否存在用户,powershell,foreach,octopus-deploy,Powershell,Foreach,Octopus Deploy,我想在Octopus Deploy中添加一个使用Powershell脚本的用户,该脚本运行良好。我想验证该用户是否已经存在,然后不添加该用户。有人能指出我做错了什么吗。它表示用户存在,即使用户不存在。它搜索用户列表以查看该用户是否存在。我正在使用invokerestmethod添加用户,效果很好。在我添加用户之前,我对用户是否存在的验证感到困惑。有没有更简单的方法 function AddNewUser{ Param( [string]$OctopusURL, [string]$APIKey,

我想在Octopus Deploy中添加一个使用Powershell脚本的用户,该脚本运行良好。我想验证该用户是否已经存在,然后不添加该用户。有人能指出我做错了什么吗。它表示用户存在,即使用户不存在。它搜索用户列表以查看该用户是否存在。我正在使用invokerestmethod添加用户,效果很好。在我添加用户之前,我对用户是否存在的验证感到困惑。有没有更简单的方法

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"
}
}

如果未找到现有用户,$userId为$null,因此计算结果为false

如果找到用户,您的foreach循环也会返回,因此这个if语句看起来不是必需的。如果做到这一点,你可以假设用户不存在(只要你的用户少于100000)

如果未找到现有用户,$userId为$null,因此计算结果为false

如果找到用户,您的foreach循环也会返回,因此这个if语句看起来不是必需的。如果做到这一点,你可以假设用户不存在(只要你的用户少于100000)

if ($userId -eq '') {