diff --git a/README.txt b/README.txt
index 84e2e57..9f47ac9 100644
--- a/README.txt
+++ b/README.txt
@@ -17,14 +17,21 @@ Requirements:
 - Sym-link the drupalcs directory into the standards folder for PHP_CodeSniffer.
   The code for that looks like this:
 
-$> sudo ln -sv /path/to/drupalcs/Drupal $(pear config-get php_dir)/PHP/CodeSniffer/Standards 
+$> sudo ln -sv /path/to/drupalcs/Drupal $(pear config-get php_dir)/PHP/CodeSniffer/Standards
 
+Optional: To enable drush commands, enable the drupalcs project
+
+$> drush -y en drupalcs
 
 Usage (running in a shell)
 --------------------------
 
 $> phpcs --standard=Drupal --extensions=php,module,inc,install,test,profile,theme /path/to/drupal_module
 
+Usage (drush)
+-------------
+
+$> drush drupalcs sites/all/modules/custom
 
 Working with Editors
 --------------------
diff --git a/drupalcs.drush.inc b/drupalcs.drush.inc
new file mode 100644
index 0000000..70e2fcc
--- /dev/null
+++ b/drupalcs.drush.inc
@@ -0,0 +1,245 @@
+<?php
+/**
+ * @file
+ * Drush support.
+ */
+
+/**
+ * Implements hook_drush_command().
+ */
+function drupalcs_drush_command() {
+  $items = array();
+
+  $items['drupalcs'] = array(
+    'description' => dt('Executes PHP_CodeSniffer with Drupal Coding Standards on a particular directory.'),
+    'arguments' => array(
+      'path' => dt('The path that you wish to scan.'),
+    ),
+    'aliases' => array('dcs'),
+    'options' => array(
+      'extensions' => array(
+        'description' => dt('Comma delimited list of file extensions to scan.  The default is @default', array(
+          '@default' => implode(',', _drupalcs_extensions_default()),
+        )),
+        'example-value' => dt('php,module'),
+      ),
+      'report' => array(
+        'description' => dt('Specify the report format.  Options are: full, xml, checkstyle, csv, emacs, source, summary, svnblame, gitblame or hgblame.'),
+        'example-value' => dt('xml'),
+      ),
+      'report-file' => array(
+        'description' => 'Write the report to the specified file path.',
+        'example-value' => '/var/log/snifflog.xml',
+      ),
+    ),
+  );
+
+  return $items;
+}
+
+/**
+ * Implements hook_drush_help().
+ *
+ * @param string $section
+ *   The help section.
+ *
+ * @return string
+ *   The help text for the command.
+ */
+function drushrc_drush_help($section) {
+  switch ($section) {
+    case 'drush:drupalcs': {
+      return dt('This command will execute PHP_CodeSniffer on a given path, using Drupal Coding Standard definitions.');
+    }
+  }
+}
+
+/**
+ * Implements drush_hook_COMMAND_validate().
+ */
+function drush_drupalcs_validate($path = '') {
+  if (!_druaplcs_is_compatible_phpcs_installed()) {
+    $path_to_phpcs = _drupalcs_get_path();
+    if ($path_to_phpcs) {
+      return drush_set_error('NOT_INSTALLED', dt('PHP_CodeSniffer is not installed.'));
+    }
+    else {
+      return drush_set_error('INCOMPATIBLE', dt('No compatible version of PHP_CodeSniffer was found; you must have 1.3.4 or higher.  Alternatively, you can symbolically link with the following command: sudo ln -sv @path $(pear config-get php_dir)/PHP/CodeSniffer/Standards/Drupal', array('@path' => _drupalcs_get_standard($path_to_phpcs))));
+    }
+  }
+  if (!file_exists(drush_get_context('DRUSH_OLDCWD') . '/' . $path)) {
+    return drush_set_error('NO_PATH', dt('Path not found; cannot scan.'));
+  }
+}
+
+/**
+ * A command callback; executes PHP_CodeSniffer with Drupal standards.
+ */
+function drush_drupalcs($path) {
+  $phpcs_path = _drupalcs_get_path();
+
+  // Start building the command; begin with the executable.
+  $command = $phpcs_path;
+
+  // Add the standard.
+  $command .= ' --standard=' . _drupalcs_get_standard($phpcs_path);
+
+  // Define the extensions; allow overriding.
+  $extensions = drush_get_option('extensions');
+  if (!$extensions) {
+    $extensions = _drupalcs_extensions_default();
+  }
+  $command .= ' --extensions=' . implode(',', $extensions);
+
+  // Optionally define the report format.
+  $report = drush_get_option('report');
+  if ($report) {
+    $command .= ' --report=' . $report;
+  }
+
+  // Optionally define the report file.
+  $reportfile = drush_get_option('report-file');
+  if ($reportfile) {
+    $command .= ' --report-file=' . $reportfile;
+  }
+
+  // Path that you wish to scan.
+  $command .= ' ' . drush_get_context('DRUSH_OLDCWD') . '/' . $path;
+
+  // Execute the command.
+  $result = drush_shell_exec($command);
+  drush_print(implode("\n", drush_shell_exec_output()));
+
+  // Report failure.
+  if (!$result) {
+    drush_set_error('PHPCS_FAIL', dt('PHP_CodeSniffer found at least one issue.'));
+  }
+  // There is a report file; no idea how many errors/warnings there were.
+  elseif ($reportfile) {
+    drush_log(dt('PHP_CodeSniffer executed.'), 'success');
+  }
+  // No problems found.
+  else {
+    drush_log(dt('PHP_CodeSniffer did not find any problems.'), 'success');
+  }
+}
+
+/**
+ * Define the default extensions scanned by PHP_CodeSniffer
+ *
+ * @return array
+ *   Default extensions; should cover standard Drupal projects.
+ */
+function _drupalcs_extensions_default() {
+  return array(
+    'php',
+    'module',
+    'inc',
+    'install',
+    'test',
+    'profile',
+    'theme',
+  );
+}
+
+/**
+ * Check to see if a compatible version of PHP_CodeSniffer is installed.
+ *
+ * @return boolean
+ *   Whether or not a compatible version of PHP_CodeSniffer is installed.
+ */
+function _druaplcs_is_compatible_phpcs_installed() {
+  // Check to see if phpcs is installed.
+  $result = drush_shell_exec('phpcs --version');
+  if ($result) {
+    // Check if Drupal standard is installed.
+    if (_drupalcs_is_drupal_standard_installed('phpcs')) {
+      return TRUE;
+    }
+    // A fix was applied after version 1.3.3 that allowed external Sniff paths.
+    $version = _drupalcs_get_phpcs_version('phpcs');
+    // Version from git? Good luck.
+    if ('@package_version@' == $version) {
+      return TRUE;
+    }
+    // Version number comparison.
+    if (version_compare($version, '1.3.3', '>')) {
+      return TRUE;
+    }
+  }
+  return FALSE;
+}
+
+/**
+ * Get the version number a version of PHP_CodeSniffer.
+ *
+ * @param string $path_to_phpcs
+ *   The path to PHP_CodeSniffer.
+ *
+ * @return string
+ *   The version number of PHP_CodeSniffer.
+ */
+function _drupalcs_get_phpcs_version($path_to_phpcs) {
+  $result = drush_shell_exec($path_to_phpcs . ' --version');
+  if ($result) {
+    $phpcs_version = explode(' ', array_pop(drush_shell_exec_output()));
+    return $phpcs_version[2];
+  }
+  return NULL;
+}
+
+/**
+ * Check to see if the Drupal standard has been installed.
+ *
+ * @param string $path_to_phpcs
+ *   The path to PHP_CodeSniffer.
+ *
+ * @return boolean
+ *   Returns TRUE if Drupal standard has been installed.
+ */
+function _drupalcs_is_drupal_standard_installed($path_to_phpcs) {
+  $result = drush_shell_exec($path_to_phpcs . ' -i');
+  if ($result) {
+    $phpcs_installed = array_pop(drush_shell_exec_output());
+    if (strpos($phpcs_installed, 'Drupal')) {
+      return TRUE;
+    }
+  }
+  return FALSE;
+}
+
+/**
+ * Get the path to PHP_CodeSniffer.
+ *
+ * @return string
+ *   The path to PHP_CodeSniffer.
+ */
+function _drupalcs_get_path() {
+  if (_druaplcs_is_compatible_phpcs_installed()) {
+    return 'phpcs';
+  }
+  // This is a potential place to check for libraries.
+  return '';
+}
+
+/**
+ * Get the full coding standard for PHP_CodeSniffer.
+ *
+ * @param string $path_to_phpcs
+ *   The path to PHP_CodeSniffer.
+ *
+ * @return string
+ *   The proper phpcs standard definition, full path or just the name.
+ */
+function _drupalcs_get_standard($path_to_phpcs) {
+  $standard_name = 'Drupal';
+  if (_drupalcs_is_drupal_standard_installed($path_to_phpcs)) {
+    return $standard_name;
+  }
+  $standard_path = drush_get_context('DRUSH_DRUPAL_ROOT');
+  $standard_path .= '/';
+  $standard_path .= drupal_get_path('module', 'drupalcs');
+  $standard_path .= '/';
+  $standard_path .= $standard_name;
+  return $standard_path;
+}
diff --git a/drupalcs.module b/drupalcs.module
new file mode 100644
index 0000000..2818ebe
--- /dev/null
+++ b/drupalcs.module
@@ -0,0 +1,5 @@
+<?php
+/**
+ * @file
+ * DrupalCS file to allow this module to be enabled.
+ */
