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?
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).
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ć.
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
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 --help
opcje filtrowania.
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"