如何使用Drush删除所有被阻止的用户?

时间:2013-02-15 07:38:04

标签: drupal drush

如何使用Drush删除所有被阻止的用户?我有数百名来自垃圾邮件发送者的封锁用户。我想删除所有这些用户。我尝试通过Web界面进行操作,但这一次只适用于大约20个用户。我有60页要删除,这需要太长时间并且不可持续。此外,我希望在删除被阻止的用户时运行所有相关的回调,并且我希望删除所有内容。我注意到user-cancel,但这似乎只适用于单个用户。有没有办法让这个命令适用于所有被阻止的用户?

3 个答案:

答案 0 :(得分:3)

使用Drupal 7和Drush 5.9,我的方式是:

1-为您当地的Drupal安装创建一个别名“@ example-local”,如图here所示。

2-使用以下代码创建名为“delete-blocked-users.script”的脚本文件,例如“/ Users / username / scripts / drush”:

#!/usr/bin/env drush

$users = db_query("SELECT * FROM {users} WHERE (status = 0)");
foreach ($users as $user) {
  exec("drush @example-local user-cancel $user->name -y");
}

3-使用以下命令使脚本文件可执行:

chmod +x ~/scripts/drush/delete-blocked-users.script 

4-最后,使用以下命令运行脚本:

drush @example-local scr ~/scripts/drush/delete-blocked-users.script 

这将删除所有被阻止的用户(状态为0的用户),而不要求确认(由-y标志定义)。

答案 1 :(得分:2)

Drush没有简单的命令来删除所有被阻止的帐户。在您的管理界面中设置vbo视图可能会更容易,您可以过滤被阻止的用户,然后您可以选择全部并取消。

您还可以使用drush php-script script.php运行php脚本。

因此,您可以设置一个php脚本,对被阻止的用户进行查询,然后通过用户进行循环并调用用户取消功能。

答案 2 :(得分:-2)

除了drush之外,只需使用用户,密码和数据库名称更容易访问mysql数据,您可以在文件drupalhomedir / sites / default / setting.php中找到命令:

mysql -u username-at-setting -ppassword-at-setting database-at-setting

然后删除drupal' user'上的所有记录表格:

DELETE FROM user WHERE status=0;