Powershell (noto fino a qualche tempo fa con il nome di Monad) è una shell che permette di utilizzare scripting con managed code.
Ma che cos'è PowerShell?

"Windows PowerShell is a new task-based command line shell and intuitive scripting language for system administration that provides comprehensive control and automation for Windows administrators."

L'intento dei creatori, come si legge nella documentazione, è quello di aprire le porte ad un nuovo modo di amministrare la piattaforma windows, utilizzando un linguaggio nuovo, basato su una logica ad oggetti ma rimanendo sempre un linguaggio di scripting.
A differenza delle altre shells (tipo il cmd.exe), powershell non esegue un nuovo processo ma tutte le operazioni avvengono all'interno del suo contesto (come il comando DIR per il cmd).

Un po' per divertimento un po' per lavoro (che per fortuna spesso coincidono  ), ho cominciato a esplorare questo nuovo tool di amministrazione.
Nei prossimi post cercherò di mostrare passo passo il funzionamento e come effettuare le operazioni più comuni.

Per adesso un piccolo esempiodi utilizzo di powershell, in particolare qualcosa che mi sta molto a cuore, l'amministrazione di IIS

Supponendo di voler visualizzare tutti i gli application pools contenuti in IIS, utilizzando C# avremo un codice simile a questo:

using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
    
public class MyWMIQuery
    {
        
public static void Main()
        {
            
try
            
{
                ManagementObjectSearcher searcher = 
                    
new ManagementObjectSearcher("root\\MicrosoftIISv2", 
                    "SELECT * FROM IIsApplicationPoolsSetting"); 

                
foreach (ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("IIsApplicationPoolsSetting instance");
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("Name: {0}", queryObj["Name"]);
                }
            }
            
catch (ManagementException e)
            {
               Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);
            }
        }
    }
}

(codice generato con WMICodeCreator, molto molto utile )

Per poter ottenere le stesse informazioni, nella command-line di PowerShell basteranno pochi comandi:

get-WmiObject -namespace "root\MicrosoftIISv2" IISApplicationPoolSetting | fl Name

E verranno visualizzati tutti gli application pools configurati nel server!

Qualche link utile per PowerShell:

x86 PowerShell : http://go.microsoft.com/fwlink/?linkid=64772&clcid=0x409
x64 PowerShell : http://go.microsoft.com/fwlink/?linkid=64772&clcid=0x409
La (poca) documentazione: http://go.microsoft.com/fwlink/?linkid=64774&clcid=0x409
Ma soprattutto la "must have" powershellIDE: http://www.powershell.com/

powered by IMHO 1.3