diff --git a/drush_delete.services.yml b/drush_delete.services.yml
index a0ef314..2b467a4 100644
--- a/drush_delete.services.yml
+++ b/drush_delete.services.yml
@@ -2,3 +2,7 @@ services:
   drush_delete.entity:
     class: Drupal\drush_delete\DeleteContent
     arguments: ['@entity_type.manager', '@database']
+  drush_delete.commands:
+    class: \Drupal\drush_delete\Commands\DrushDeleteCommands
+    tags:
+      - { name: drush.command }
diff --git a/src/Commands/DrushDeleteCommands.php b/src/Commands/DrushDeleteCommands.php
new file mode 100644
index 0000000..638cfc6
--- /dev/null
+++ b/src/Commands/DrushDeleteCommands.php
@@ -0,0 +1,68 @@
+<?php
+
+namespace Drupal\drush_delete\Commands;
+
+use Drush\Commands\DrushCommands;
+
+/**
+ * A Drush commandfile.
+ *
+ * In addition to this file, you need a drush.services.yml
+ * in root of your module, and a composer.json file that provides the name
+ * of the services file to use.
+ *
+ * See these files for an example of injecting Drupal services:
+ *   - http://cgit.drupalcode.org/devel/tree/src/Commands/DevelCommands.php
+ *   - http://cgit.drupalcode.org/devel/tree/drush.services.yml
+ */
+class DrushDeleteCommands extends DrushCommands {
+
+  /**
+   * Delete all contents.
+   *
+   * @param $type
+   *   The entity type name
+   * @validate-module-enabled drush_delete
+   *
+   * @command delete:all
+   * @aliases delete-all article,delete-all
+   */
+  public function all($type = '') {
+    // See bottom of https://weitzman.github.io/blog/port-to-drush9 for details on what to change when porting a
+    // legacy command.
+    $this->output()->writeln(\Drupal::service('drush_delete.entity')->deleteAllEntityType($type));
+  }
+
+  /**
+   * Delete all entity content.
+   *
+   * @param $type
+   *   The entity type name
+   * @validate-module-enabled drush_delete
+   *
+   * @command delete:all-entity
+   * @aliases dae,delete-all-entity
+   */
+  public function allEntity($type = '') {
+    // See bottom of https://weitzman.github.io/blog/port-to-drush9 for details on what to change when porting a
+    // legacy command.
+    $this->output()->writeln(\Drupal::service('drush_delete.entity')->deleteAllEntity($type));
+  }
+
+  /**
+   * Delete selected Taxonomy Vocabulary terms.
+   *
+   * @param $type
+   *   The taxonomy vocabulary name
+   * @validate-module-enabled drush_delete
+   *
+   * @command delete:all-taxonomy-vocabulary-term
+   * @aliases delete-all taxonomy-vocabulary,delete-all-taxonomy-vocabulary-term
+   */
+  public function allTaxonomyVocabularyTerm($type = '') {
+    // See bottom of https://weitzman.github.io/blog/port-to-drush9 for details on what to change when porting a
+    // legacy command.
+    $this->output()->writeln(\Drupal::service('drush_delete.entity')->deleteAllTerms($type));
+  }
+
+}
