drush
を使用しているすべてのユーザーに関する情報を一覧表示したいと思います。
有る user-information
、しかしそれは単一のユーザーに関する情報だけを示します。
他の解決策はありますか?
最近のサンドボックスプロジェクトがあります: Drush User List (by John )これはDrupal 6&7( GitHub )。
使用法:
drush user-list
その他の回避策については、次のコマンドをプロセス置換構文とともに使用すると役立つはずです。
drush uinf $(drush sqlq "SELECT GROUP_CONCAT(name) FROM users")
ただし、場合によっては失敗することがあります(ユーザーの名前に特殊文字が含まれている場合)。
Kenorbが指摘したように、SQLクエリによる回避策があります。
そして、マイナーな変更により、ユーザー名の代わりに「uid」(整数)を使用することで、名前の特殊文字に対してより堅牢になります。
drush uinf $(drush sqlq "SELECT GROUP_CONCAT(uid) FROM users")
PS:Drupal 7のみ確認済み。
PPS:別の回答を追加して申し訳ありません。まだコメントできません。
Drupal 8の場合、次のコマンドを実行できます。
drush uinf $(drush sqlq "SELECT GROUP_CONCAT(name) FROM users_field_data")
次のような出力が出力されます。
User ID : 1
User name : admin
User mail : [email protected]
User roles : authenticated
administrator
User status : 1
Drupal 8の場合、 PackagistのDrush 9コマンド があります。たとえば、.
drush users:list
すべてのDrupalユーザーを表形式でリストします。フィルタリングオプションについては、
drush users:list --help
を参照してください。
申し訳ありませんが、このスクリプトは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"