Saya ingin mendaftar informasi tentang semua pengguna yang menggunakan drush
.
Ada user-information
, tetapi hanya menunjukkan informasi tentang pengguna tunggal.
Apakah ada solusi lain?
Ada proyek kotak pasir baru-baru ini: Daftar Pengguna Drush (oleh John ) yang seharusnya berfungsi untuk Drupal 6 & 7 (lihat GitHub ).
Pemakaian:
drush user-list
Untuk solusi lain, perintah berikut dengan sintaksis substitusi proses akan membantu:
drush uinf $(drush sqlq "SELECT GROUP_CONCAT(name) FROM users")
Namun itu bisa gagal dalam beberapa kasus (ketika pengguna memiliki beberapa karakter khusus dalam nama mereka).
Seperti yang ditunjukkan oleh Kenorb, ada solusi melalui SQL-query.
Dan dengan perubahan kecil, itu menjadi lebih kuat untuk karakter khusus dalam nama - dengan menggunakan "uid" (integer) alih-alih nama pengguna:
drush uinf $(drush sqlq "SELECT GROUP_CONCAT(uid) FROM users")
PS: Dikonfirmasi hanya untuk Drupal 7.
PPS: Maaf karena menambahkan jawaban lain, saya belum bisa berkomentar.
Untuk Drupal 8 Anda dapat menjalankan perintah berikut:
drush uinf $(drush sqlq "SELECT GROUP_CONCAT(name) FROM users_field_data")
Output akan menempatkan sesuatu seperti berikut ini:
User ID : 1
User name : admin
User mail : info@example.com
User roles : authenticated
administrator
User status : 1
Untuk Drupal 8, ada perintah Drush 9 pada Packagist , mis
drush users:list
Daftar semua pengguna Drupal dalam format tabel. Lihat
drush users:list --help
opsi penyaringan.
Maaf ... menulis skrip ini untuk mesin remote Drupal 8 dengan alias; mudah beradaptasi dengan lokal jika perlu.
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"