Drupal upgrade instructions always say to disable all non-core modules before the upgrade and then to enable them again afterwards. If you have a lot of modules this is a real pain, especially because of dependencies many can't be enabled or disabled until others are first enabled or disabled. Not to mention the chances to make a mistake!
I'm unskilled at Drupal, at Drush, and at shell scripting, but nontheless I made a couple shell scripts that use Drush to disable or re-enable all my non-core modules. These scripts are guaranteed to be buggy and slipshod, so before you play with them back everything up and check that your life-insurance policy is up to date. Seriously, I'd love to get feedback about how to make these better, but they seem to work for me with my Drupal 6.13 system running on Ubuntu 8.10 (Ibex).
These scripts assume that Drush 2.0 is installed and running and that your Drupal root is at /var/www and that you are working with Drupal 6. Actually, the scripts probably assume a lot of other stuff too, but I'm too dumb to even know what.
The first script disables all the non-core modules. It uses the Drush "statusmodules" command which returns ALL modules, including the core ones - and woe be to you if you disable the core modules. So the script gets the list of all modules, then removes the 5 core modules (Block, Filter, Node, System, and User) from the list. Then it prepends the "drush disable" command to the front of the list, and saves that whole thing as a new shell script, makes the script executable, and then executes it.
cd /var/www drush statusmodules --pipe >originalmodulelist.txt sed -e 's/ block / /g' -e 's/ filter / /g' -e 's/ node / /g' -e 's/ system / /g' -e 's/ user / /g' originalmodulelist.txt >trimmedmodulelist.txt sed 's/^/drush disable /' trimmedmodulelist.txt >disablemodules sudo chmod 777 disablemodules sudo ./disablemodules
The second script is even simpler. It makes a copy of the shell script created by the Disable Script, changes the "drush disable" command to be "drush enable" and then pulls the same dopey trick of creating a new shell script and executing it. If for some reason you have lost or moved the earlier script you will be out of luck.
cd /var/www sed 's/disable/enable/' disablemodules >reenablemodules sudo chmod 777 reenablemodules sudo ./reenablemodules
My wish is that someone who knows what they are doing would help me to improve these scripts (and the instructions) to the point where they could be placed in the Documentation part of drupal.org.