Je voudrais lister des informations sur tous les utilisateurs utilisant drush
.
Il y a user-information
, mais il affiche uniquement des informations sur un seul utilisateur.
Y a-t-il d'autres solutions?
Il y a un projet récent de sandbox: Drush User List (by John ) qui devrait fonctionner pour Drupal 6 & 7 (voir GitHub ).
Usage:
drush user-list
Pour toute autre solution de contournement, la commande suivante avec la syntaxe de substitution de processus devrait aider:
drush uinf $(drush sqlq "SELECT GROUP_CONCAT(name) FROM users")
Cependant, il pourrait échouer dans certains cas (lorsque les utilisateurs ont des caractères spéciaux dans leur nom).
Comme l'a souligné kenorb, il existe une solution de contournement via SQL-query.
Et avec un changement mineur, il devient plus robuste aux caractères spéciaux dans les noms - en utilisant "uid" (entier) au lieu des noms d'utilisateur:
drush uinf $(drush sqlq "SELECT GROUP_CONCAT(uid) FROM users")
PS: confirmé pour Drupal 7 uniquement.
PPS: Désolé d'avoir ajouté une autre réponse, je ne peux pas encore commenter.
Pour Drupal 8, vous pouvez exécuter la commande suivante:
drush uinf $(drush sqlq "SELECT GROUP_CONCAT(name) FROM users_field_data")
La sortie ressemblera à quelque chose comme ceci:
User ID : 1
User name : admin
User mail : [email protected]
User roles : authenticated
administrator
User status : 1
Pour Drupal 8, il y a commande Drush 9 sur Packagist , par ex.
drush users:list
Répertoriez tous les utilisateurs Drupal sous forme de tableau. Voir
drush users:list --help
pour les options de filtrage.
Désolé ... a écrit ce script pour Drupal 8 machines distantes avec alias; facilement adaptable au local si nécessaire.
if [ $# -lt 1 ]
then
echo "Usage : $0 sitealias [all/disabled/enabled] [rolename]"
echo "Note: this only runs on Drupal 8 schema"
exit
fi
ARG1=$1
ARG2=${2:-all}
ARG3=${3:-nothing}
if [ "$ARG3" != "nothing" ]
then
ROLEWHERE='AND user__roles.roles_target_id="'$ARG3'"'
fi
case "$ARG2" in
enabled)
WHERECLAUSE='WHERE users_field_data.status="1" '$ROLEWHERE
;;
disabled)
WHERECLAUSE='WHERE users_field_data.status="0" '$ROLEWHERE
;;
all)
WHERECLAUSE='WHERE users_field_data.status LIKE "%" '$ROLEWHERE
;;
*)
WHERECLAUSE=''
;;
esac
QUERY='SELECT users_field_data.uid,users_field_data.name,users_field_data.mail,from_unixtime(users_field_data.login) AS "lastlogin",user__roles.roles_target_id,users_field_data.status FROM users_field_data LEFT JOIN user__roles ON users_field_data.uid = user__roles.entity_id '$WHERECLAUSE
drush $1 sqlq "$QUERY"