Il 0% ha trovato utile questo documento (0 voti)
1 visualizzazioni

About Command Precedence - Help

Caricato da

cloudcrownmusic
Copyright
© © All Rights Reserved
Formati disponibili
Scarica in formato TXT, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
1 visualizzazioni

About Command Precedence - Help

Caricato da

cloudcrownmusic
Copyright
© © All Rights Reserved
Formati disponibili
Scarica in formato TXT, PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 5

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

Potrebbero piacerti anche