@Override public Response add(User user) { validateParameters(user, "userName|id", "roles.id|name"); StringBuilder buf = new StringBuilder(); String userArg = null; if (user.isSetId()) { userArg = PowerShellUtils.escape(user.getId()); } else { buf.append("$u = select-user -AD").append(SEARCH_TEXT); buf.append(PowerShellUtils.escape(user.getUserName())).append("; "); userArg = "$u.UserId"; } String roleArg = getRoleArg(user.getRoles().getRoles().get(0), buf); buf.append("add-user -userid ").append(userArg).append(" -userroleid ").append(roleArg); User newUser = PowerShellUserResource.addLinks(getUriInfo(), runAndParseSingle(buf.toString())); UriBuilder uriBuilder = getUriInfo().getAbsolutePathBuilder().path(newUser.getId()); if (user.getRoles().getRoles().size() > 1) { for (int i = 1 ; i < user.getRoles().getRoles().size() ; i++) { StringBuilder addRole = new StringBuilder(); String extraRoleArg = getRoleArg(user.getRoles().getRoles().get(i), addRole); addRole.append("attach-role -roleid ").append(extraRoleArg) .append(" -elementid ").append(newUser.getId()); PowerShellRoleResource.runAndParseSingle(getPool(), getParser(), newUser.getId(), addRole.toString()); } } return Response.created(uriBuilder.build()).entity(newUser).build(); }