如何列出匆忙中的所有用户?


12

我想列出有关使用的所有用户的信息drush

user-information,但仅显示有关单个用户的信息。

还有其他解决方案吗?

Answers:


7

最近有一个沙箱项目:Drush用户列表(由John 撰写),该项目适用于Drupal 6和7(请参阅GitHub)。

用法:

drush user-list

对于其他解决方法,具有进程替换语法的以下命令应有所帮助:

drush uinf $(drush sqlq "SELECT GROUP_CONCAT(name) FROM users")

但是,在某些情况下(当用户名称中包含一些特殊字符时),它可能会失败。


6

正如kenorb所指出的,有一种通过SQL查询的解决方法。

稍作更改后,名称中的特殊字符将变得更加强大-通过使用“ uid”(整数)代替用户名:

drush uinf $(drush sqlq "SELECT GROUP_CONCAT(uid) FROM users")

PS:仅适用于Drupal 7。
PPS:很抱歉添加另一个答案,我还不能发表评论。


5

对于Drupal 8,您可以运行以下命令:

drush uinf $(drush sqlq "SELECT GROUP_CONCAT(name) FROM users_field_data")

输出将产生类似于以下内容的信息:

 User ID       :  1
 User name     :  admin
 User mail     :  info@example.com
 User roles    :  authenticated
                  administrator
 User status   :  1


0

抱歉...为具有别名的Drupal 8远程计算机编写了此脚本;必要时很容易适应本地。

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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.