Jak wyświetlić listę wszystkich użytkowników drush?

12

Chciałbym wymienić informacje o wszystkich użytkownikach drush.

Jest user-information, ale pokazuje informacje tylko o jednym użytkowniku.

Czy są jakieś inne rozwiązania?

kenorb
źródło

Odpowiedzi:

7

Istnieje niedawny projekt piaskownicy: Drush User List (autor John ), który powinien działać dla Drupala 6 i 7 (patrz GitHub ).

Stosowanie:

drush user-list

W przypadku innego obejścia poniższe polecenie ze składnią podstawiania procesów powinno pomóc:

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

Jednak może się to nie udać w niektórych przypadkach (gdy użytkownicy mają w nazwie jakieś znaki specjalne).

kenorb
źródło
6

Jak wskazał kenorb, istnieje obejście tego problemu za pomocą zapytania SQL.

A z niewielką zmianą staje się bardziej odporny na znaki specjalne w nazwach - poprzez użycie „uid” (liczba całkowita) zamiast nazw użytkowników:

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

PS: Potwierdzony tylko dla Drupala 7.
PPS: Przepraszam za dodanie kolejnej odpowiedzi, nie mogę jeszcze komentować.

El Hannes
źródło
5

W przypadku Drupala 8 możesz uruchomić następującą komendę:

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

Dane wyjściowe zlokalizują coś takiego:

 User ID       :  1
 User name     :  admin
 User mail     :  info@example.com
 User roles    :  authenticated
                  administrator
 User status   :  1
DrupalFever
źródło
4

W przypadku Drupala 8 na Packagist znajduje się polecenie Drush 9 , np

drush users:list

Wyświetl wszystkich użytkowników Drupala w formie tabeli. Zobacz drush users:list --helpopcje filtrowania.

Richard
źródło
0

Przepraszamy ... napisałem ten skrypt dla zdalnych maszyn Drupal 8 z aliasami; łatwo dostosowuje się do lokalnych w razie potrzeby.

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"
Sean
źródło