ARGOMENTO
    about_Command_Precedence

DESCRIZIONE BREVE
    Descrive la modalità in cui in Windows PowerShell viene 
    determinato quale comando eseguire.


DESCRIZIONE DETTAGLIATA
    In questo argomento viene illustrata la modalità in cui in 
    Windows PowerShell viene determinato quale comando eseguire, in 
    particolare quando una sessione contiene più di un comando con lo 
    stesso nome.
    Viene inoltre illustrato come eseguire comandi che non vengono 
    eseguiti per impostazione predefinita e come evitare i conflitti 
    nome-comando nella sessione.



 PRECEDENZA DEI COMANDI
    Quando una sessione include comandi con lo stesso nome, in 
    Windows PowerShell vengono utilizzate le regole seguenti per 
    determinare quale comando eseguire.

    Queste regole diventano molto importanti quando si aggiungono 
    alla sessione comandi da moduli, snap-in e altre sessioni.

    
    -- Se si specifica il percorso di un comando, Windows PowerShell 
       esegue il comando nella posizione specificata dal percorso. 

       Ad esempio, tramite il comando seguente viene eseguito lo 
       script FindDocs.ps1 incluso nella directory C:\TechDocs:

           C:\TechDocs\FindDocs.ps1

       Come funzionalità di sicurezza, Windows PowerShell non esegue 
       comandi eseguibili (nativi), inclusi gli script di Windows 
       PowerShell, a meno che il comando non si trovi in un percorso 
       elencato nella variabile di ambiente Path ($env:path) o si 
       specifichi il percorso del file di script. 

       Per eseguire uno script che si trova nella directory corrente, 
       specificare il percorso completo oppure digitare un punto (.) 
       per rappresentarla.

       Ad esempio, per eseguire il file FindDocs.ps1 nella directory 
       corrente, digitare:

           .\FindDocs.ps1

        

    -- Se non si specifica un percorso, in Windows PowerShell viene 
       utilizzato il seguente ordine di precedenza quando vengono 
       eseguiti i comandi:

            1. Alias
            2. Function
            3. Cmdlet 
            4. Comandi di Windows nativi

        Pertanto, se si digita "help", Windows PowerShell cerca 
        innanzitutto un alias denominato "help", quindi una funzione 
        denominata "Help" e infine un cmdlet denominato "Help". Verrà 
        eseguito il primo elemento "help" trovato.

        Si supponga, ad esempio, di disporre di una funzione denominata Get-Map. 
        Quindi, di aggiungere o importare un cmdlet denominato Get-Map. Per impostazione predefinita, Windows PowerShell
        esegue la funzione quando si digita "Get-Map".


    --	Quando la sessione contiene elementi dello stesso tipo con lo 
      	stesso nome, ad esempio due cmdlet con lo stesso nome, Windows 
      	PowerShell esegue l'elemento aggiunto più recentemente alla 
      	sessione.

        Ad esempio, si supponga di disporre di un cmdlet denominato Get-Date. Quindi, 
        si importa un altro cmdlet denominato Get-Date. Quando si digita 
        "Get-Date", Windows PowerShell esegue il cmdlet importato più 
        recentemente per impostazione predefinita.




 ELEMENTI NASCOSTI E SOSTITUITI
    Come conseguenza di queste regole, gli elementi possono essere 
    sostituiti o nascosti da elementi con lo stesso nome. 

        --  Gli elementi vengono "nascosti" o "ombreggiati" se è 
            ancora possibile accedere all'elemento originale, ad 
            esempio indicando il nome dell'elemento con il nome di un 
            modulo o di uno snap-in. 

            Se si importa, ad esempio, una funzione con lo stesso 
            nome di un cmdlet della sessione, il cmdlet viene 
            nascosto (ma non sostituito) poiché è stato importato da 
            uno snap-in o un modulo.
            

        --  Gli elementi vengono "sostituiti" o "sovrascritti" se non 
            è più possibile accedere all'elemento originale.

            Se si importa, ad esempio, una variabile con lo stesso 
            nome di una variabile della sessione, la variabile 
            originale viene sostituita e non è più accessibile. Non è 
            possibile qualificare una variabile con il nome di un modulo.
           
            Inoltre, se si digita una funzione nella riga di comando 
            e si importa una funzione con lo stesso nome, la funzione 
            originale viene sostituita e non è più accessibile.



 ESECUZIONE DI COMANDI NASCOSTI
    È possibile eseguire determinati comandi specificando le 
    proprietà degli elementi che consentono di distinguere il comando 
    dagli altri comandi che potrebbero avere lo stesso nome. 

    È possibile utilizzare questo metodo per eseguire qualsiasi 
    comando, ma è particolarmente utile per l'esecuzione di comandi 
    nascosti. 

    Utilizzare questo metodo come procedura consigliata durante la 
    scrittura di script da distribuire poiché non è possibile 
    stimare quali comandi potrebbero essere presenti nella sessione 
    in cui è in esecuzione lo script.


    NOMI QUALIFICATI
        È possibile eseguire comandi importati da uno snap-in, un 
        modulo o un'altra sessione di Windows PowerShell, indicando 
        il nome del comando con il nome del modulo o lo snap-in in 
        cui ha avuto origine. 

        È possibile qualificare i comandi, ma non le variabili o gli 
        alias.   

        Ad esempio, se il cmdlet Get-Date dallo snap-in 
        Microsoft.PowerShell.Utility è nascosto da un alias, una 
        funzione o un cmdlet con lo stesso nome, è possibile 
        eseguirlo utilizzando il nome qualificato come snap-in del cmdlet:

            Microsoft.PowerShell.Utility\Get-Date

        Per eseguire un comando New-Map aggiunto dal modulo 
        MapFunctions, utilizzare il nome qualificato come modulo:

            MapFunctions\New-Map


        Per trovare lo snap-in o il modulo da cui è stato importato 
        un comando, utilizzare il formato di comando Get-Command seguente:

            get-command <nome-comando> | format-list -property Name, 
            PSSnapin, Module

        Ad esempio, per trovare l'origine del cmdlet Get-Date, digitare:

            get-command get-date | format-list -property Name, 
            PSSnapin, Module

            Name   : Get-Date
            PSSnapIn: Microsoft.PowerShell.Utility
            modulo: 

    OPERATORE DI CHIAMATA
        È inoltre possibile utilizzare anche l'operatore di chiamata 
        (&) per eseguire qualsiasi comando che è possibile ottenere 
        tramite un comando Get-ChildItem (l'alias è "dir"), Get-Command o 
        Get-Module. 

        Per eseguire un comando, racchiudere il comando Get-Command tra 
        parentesi e utilizzare l'operatore di chiamata (&) per 
        eseguire il comando.

            &(get-command ...) 

        - oppure

            &(dir ... )

        Ad esempio, se si dispone di una funzione denominata Map 
        nascosta da un alias denominato Map, utilizzare il comando 
        seguente per eseguire la funzione.

            &(get-command -name map -type function) 

        - oppure

            &(dir function:\map)


        È inoltre possibile salvare il comando nascosto in una 
        variabile per renderne più semplice l'esecuzione.

        Il comando seguente, ad esempio, salva la funzione Map nella 
        variabile $myMap, quindi utilizza l'operatore di chiamata per 
        l'esecuzione.

            $myMap = (get-command -name map -type function)

            &($myMap)


        Se un comando ha avuto origine in un modulo, è possibile 
        utilizzare il formato seguente per l'esecuzione.

           & <PSModuleInfo-object> <comando>

        Ad esempio, per eseguire il cmdlet Add-File nel modulo 
        FileCommands, utilizzare la seguente sequenza di comandi:
           
           $FileCommands = get-module -name FileCommands 
           & $FileCommands Add-File
        
   

 ELEMENTI SOSTITUITI
    Gli elementi che non sono stati importati da un modulo o uno 
    snap-in, ad esempio funzioni, variabili e alias creati nella 
    sessione o aggiunti mediante un profilo, possono essere 
    sostituiti da comandi con lo stesso nome. Se vengono sostituiti, 
    non è possibile accedervi.

    Le variabili e gli alias vengono sempre sostituiti, anche se sono 
    stati importati da un modulo o uno snap-in, perché non è 
    possibile utilizzare un operatore di chiamata o un nome 
    qualificato per eseguirli.

    Se si digita, ad esempio, una funzione Get-Map nella sessione e 
    si importa una funzione denominata Get-Map, la funzione originale 
    viene sostituita. Non è possibile recuperarla nella sessione 
    corrente.


   
 EVITARE I CONFLITTI DI NOMI
    Il modo migliore per gestire i conflitti di nomi di comando è 
    impedirli. Quando si assegna un nome ai comandi, utilizzare un 
    nome molto specifico o univoco. Ad esempio, aggiungere le proprie 
    iniziali o l'acronimo del nome della società ai nomi nei comandi.

    Inoltre, durante l'importazione di comandi nella sessione da un 
    modulo di Windows PowerShell o da un'altra sessione, utilizzare 
    il parametro Prefix del cmdlet Import-Module o Import-PSSession per 
    aggiungere un prefisso ai nomi dei comandi.

    Nel comando seguente, ad esempio, viene evitato qualsiasi 
    conflitto con i cmdlet Get-Date e Set-Date disponibili in Windows 
    PowerShell quando si importa il modulo DateFunctions.

        import-module -name DateFunctions -prefix ZZ

    Per ulteriori informazioni, vedere
    Import-Module e Import-PSSession. 


VEDERE ANCHE
    about_Path_Syntax
    about_Aliases
    about_Functions
    Alias (provider)
    Function (provider)
    Get-Command
    Import-Module
    Import-PSSession




Argomenti della Guida