Buongiorno Mr Script! Creazione di script Self-Documenting

The Microsoft Scripting Guys

Per descrivere la profondità incredibile di blu brushed ampiamente tra il cielo qui in Buenos Aires verso il basso, è necessario utilizzare nomi di colori speciale. Blu cobalt blu deep-sea blu mezzanotte, mackerel holy blu, nessuna di questi anche iniziare a conferire al colore effettivo visualizzato in volta coprire la città precedente. Ampia sidewalks allineate dal vecchio centuries edifici sono punteggiato con tabelle piccolo. È possibile rimanere in un sedia metallo vuoto. Un breeze perfumed drifts lentamente eseguendo gli hint di cinnamon, cardamom e thyme. Seagulls con ALi outstretched navigare updrafts con sufficiente competenze, tolleranza e poise engender envy nella grande Kahuna si. Il leche con café sembra particolarmente apropos ed è sufficientemente sicuro per richiedere la propria attenzione con la concorrenza dall'panorami e suoni di downtown Buenos Aires. È in città per comunicare ai clienti Microsoft Premier sull'utilizzo di VBScript che consentono di gestire le proprie reti. È possibile estrarre una mappa ripiegata dal mio elenco fotocamera e andare al prevede la route da Florida Calle il Obelisk di Avenue Nueve de Julio.

È possibile trovare la posizione sulla mappa. È nella raccolta acquisti Pacifico Galerias. È possibile girare la mappa più volte tenta di orientamento con il percorso in tempo e spazio. Su questo tempo un uomo altezza, distinti-ricerca un seme scuro three-piece viene visualizzato ed è l'acronimo solo compreso il sunlight. La shadow dancing playfully nella mappa del determina mi glance alto. È possibile trovarsi come viene è visualizzato, "Buenos dias, se˜nor."

"Buenos dias", è possibile dutifully rispondere.

"AH, sono un American probabilmente?" risponde con un accento leggermente Regno Unito.

Piuttosto è effettuata aback e hesitantly rispondere nel affirmative.

"È la prima volta nella città notevole?" ha inquires.

Ancora una volta, È possibile mi reticent ma pronunciare "yes".

"Quindi può offrire il servizio humble all'utente. Che cos'è che ricerca?" ha politely richiesto.

Lo stabilire e ha procede per consentire di istruzioni. Dopo che chat per qualche minuto.

Wow. RITENGO che per uso personale. " Una città self-documenting! Non è necessario per il mapping di seguito. Gli utenti sono in modo descrittivi che avere poco il tempo di esaminare una mappa prima di un utente è presente per agevolare la".

Che è stato effettivamente pochi anni fa. Oggi, la casa in North Carolina, meteo esterno è così bel ricordato mi della mia visita a Buenos Aires, e come interessante può essere una funzionalità self-documenting. Si può avere script eseguire un servizio simile per noi, se è dedicare del tempo per pianificare in anticipo. In questo articolo, si verrà illustrato lo sviluppo di uno script che verrà raccogliere commenti da altri script che seguono un determinato schema. È possibile modificare il criterio di nostra esigenze e si possibile espandere la tecnica oltre a creare documentazione per gli script.

Si Esaminiamo uno script che dispone di alcune documentazione attentamente inserita in esso. Nello script GetSetIEStartPage.ps1 nella Figura 1 (che è stato scritto per Hey, Scripting Guy! articolo " Come è possibile modificare il pagina iniziale di Internet Explorer?", i commenti vengono inseriti nella qui le stringhe vengono quindi assegnati a un commento $ denominato variabile. Un qui, la stringa sono delineato da un tag iniziale di un segno e un segno di virgolette (@ ") e un tag di chiusura di un segno di virgolette e un chiocciola ("@). Esistono tre blocchi di commento che si desidera ottenere. Il primo contiene informazioni di intestazione script normali: titolo, autore, data, le parole chiave e i commenti relativi allo script. I blocchi di commento secondo e il terzo sono correlati in modo specifico le due funzioni principali contenute nello script.

Nella figura 1 GetSetIEStartPage.ps1

Param([switch]$get,[switch]$set,$computer="localhost")
$Comment = @"
NAME: GetSetIEStartPage.ps1
AUTHOR: ed wilson, Microsoft
DATE: 1/5/2009

KEYWORDS: stdregprov, ie, [wmiclass] type accelerator,
Hey Scripting Guy
COMMENTS: This script uses the wmiclass type accelerator
and the stdregprov to get the ie start pages and to set the
ie start pages. Using ie 7 or better you can have multiple
start pages

"@ #end comment

Function Get-ieStartPage()
{
$Comment = @"
FUNCTION: Get-ieStartPage 
Is used to retrieve the current settings for Internet Explorer 7 and greater.
The value of $hkcu is set to a constant value from the SDK that points
to the Hkey_Current_User. Two methods are used to read
from the registry because the start page is single valued and
the second start pages key is multi-valued.

"@ #end comment
 $hkcu = 2147483649
 $key = "Software\Microsoft\Internet Explorer\Main"
 $property = "Start Page"
 $property2 = "Secondary Start Pages"
 $wmi = [wmiclass]"\\$computer\root\default:stdRegProv"
 ($wmi.GetStringValue($hkcu,$key,$property)).sValue
 ($wmi.GetMultiStringValue($hkcu,$key, $property2)).sValue
} #end Get-ieStartPage

Function Set-ieStartPage()
{
$Comment = @"
FUNCTION: Set-ieStartPage 
Allows you to configure one or more home pages for IE 7 and greater. 
The $aryValues and the $Value variables hold the various home pages.
Specify the complete URL ex: "http://www.ScriptingGuys.Com" make sure
to include the quotation marks around each URL. 

"@ #end comment
  $hkcu = 2147483649
  $key = "Software\Microsoft\Internet Explorer\Main"
  $property = "Start Page"
  $property2 = "Secondary Start Pages"
  $value = "https://www.microsoft.com/technet/scriptcenter/default.mspx"
  $aryValues = "https://social.technet.microsoft.com/Forums/en/ITCG/threads/",
  "https://www.microsoft.com/technet/scriptcenter/resources/qanda/all.mspx"
  $wmi = [wmiclass]"\\$computer\root\default:stdRegProv"
  $rtn = $wmi.SetStringValue($hkcu,$key,$property,$value)
  $rtn2 = $wmi.SetMultiStringValue($hkcu,$key,$property2,$aryValues)
  "Setting $property returned $($rtn.returnvalue)"
  "Setting $property2 returned $($rtn2.returnvalue)"
} #end Set-ieStartPage

# *** entry point to script 
if($get) {Get-ieStartpage}
if($set){Set-ieStartPage}

Per scrivere i commenti dal file di origine in un altro documento, è necessario per aprire lo script originale, cercare i commenti e quindi scrivere il testo appropriato in un nuovo file. Suoni abbastanza semplice. Oh, yeah, è necessario anche un nome per il nuovo script. Si chiamarlo GetCommentsFromScript.ps1.

Lo script GetCommentsFromScript.ps1, mostrato nella Figura 2 , inizia con un'istruzione di parametro, viene utilizzata per consentire di fornire informazioni per lo script in fase di esecuzione. Di seguito è l'istruzione il parametro.

Nella figura 2 GetCommentsFromScript.ps1

Param($Script= $(throw "The path to a script is required."))
Function Get-FileName($Script)
{
 $OutPutPath = [io.path]::GetTempPath()
 Join-Path -path $OutPutPath -child "$(Split-Path $script-leaf).txt"
} #end Get-FileName

Function Remove-OutPutFile($OutPutFile)
{
  if(Test-Path -path $OutPutFile) { Remove-    Item $OutPutFile | Out-Null }
} #end Remove-OutPutFile

Function Get-Comments($Script,$OutPutFile)
{
 Get-Content -path $Script |
 Foreach-Object `
  { 
    If($_ -match '^\$comment\s?=\s?@"')
     { 
      $beginComment = $True 
     } #end if match @"
   If($_ -match '"@')
     { 
      $beginComment = $False
     } #end if match "@
   If($beginComment -AND $_ -notmatch '@"') 
     {
      $_ | Out-File -FilePath $OutPutFile -append
     } # end if beginComment
  } #end Foreach
} #end Get-Comments

Function Get-OutPutFile($OutPutFile)
{
 Notepad $OutPutFile
} #end Get-OutPutFile

# *** Entry point to script ***
$OutPutFile = Get-FileName($script)
Remove-OutPutFile($OutPutFile)
Get-Comments -script $script -outputfile $OutPutFile
Get-OutPutFile($OutPutFile)vw

Param($Script= $(throw "The path to a script   is required."))

Il vantaggio dell'utilizzo di un parametro della riga di comando è che è non necessario aprire lo script e modificarlo per fornire il percorso dello script di cui si intende copiare i commenti. Si sta creando questo parametro obbligatorio assegnando un valore di predefinito alla variabile $ script. Il valore predefinito viene utilizzato il comando di generazione per generare un errore e ciò significa che lo script verrà sempre generato alcun errore quando viene eseguito, a meno che non si specifica un valore per il parametro –script.

Si digress per un minuto ed esaminare come l'istruzione throw viene utilizzato nello script DemoThrow.ps1 nella Figura 3 . Per ottenere oltre l'errore che viene generato dall'istruzione throw nella funzione set-errori, è necessario innanzitutto impostare la variabile di errorActionPreference $ su SilentlyContinue. Questo impedisce la visualizzazione dell'errore e lo script continua. È identico a quella On Error Resume Next da VBScript. Il se l'istruzione viene utilizzata per valutare la variabile del valore di $. Se è presente una corrispondenza, viene rilevato l'istruzione throw e viene generata l'eccezione. Per valutare l'errore, è utilizzare la funzione Get-ErrorDetails. La prima cosa che avviene è la visualizzazione del numero di errore, verrà sono stati incrementata di 1 a causa dell'errore generato dall'istruzione throw. È quindi richiedere il primo errore (Errore con il valore di indice pari a 0 sempre è quello più recente) e inviare l'oggetto error al cmdlet Format-List. È selezionare tutte le proprietà. Le informazioni di chiamata, viene restituite, tuttavia, come un oggetto e occorre pertanto query direttamente tale oggetto. È tale scopo, accedere all'oggetto chiamata tramite la proprietà InvocationInfo dell'oggetto errore. Nella Figura 4 vengono visualizzate le informazioni di errore risultante.

Nella figura 3 DemoThrow.ps1

Function Set-Error
{
 $errorActionPreference = "SilentlyContinue"
 "Before the throw statement: $($error.count) errors"
 $value = "bad"
 If ($value -eq "bad") 
   { throw "The value is bad" }
} #end Set-Error

Function Get-ErrorDetails
{
 "After the throw statement: $($error.count) errors"
 "Error details:"
 $error[0] | Format-List -Property * 
 "Invocation information:"
 $error[0].InvocationInfo
} #end Get-ErrorDetails

# *** Entry Point to Script
Set-Error

Get-ErrorDetails

fig04.gif

Nella figura 4 generare l'istruzione viene utilizzato per generare un errore

Ora si tornare principale script GetCommentsFromScript.ps1. È necessario che una funzione che verrà creato un nome di file per il nuovo documento di testo che conterrà tutti i commenti ottenuti dallo script. A tale scopo, si utilizza la parola chiave funzione e successive con il nome della funzione. È verrà chiamare la funzione Get-nome file in conformità con la convenzione di denominazione sostantivo verbo Windows PowerShell. Nome file Get verranno accettare un singolo parametro input, il percorso dello script da analizzare, che rimarrà in sospeso nella variabile $ script all'interno la funzione. Ecco la voce per la funzione Get-nome file:

Function Get-FileName($Script)
{

Successivamente è ottenere il percorso nella cartella temporanea nel computer locale. Esistono molti modi per effettuare questa operazione, inclusi l'utilizzo di ambientali unità di Windows PowerShell. Tuttavia, abbiamo deciso di utilizzare il metodo statico GetTempPath dalla classe Io.Path .NET Framework. Il metodo GetTempPath restituisce il percorso per la cartella temporanea, ovvero in cui è verrà memorizzare il file testo appena creato. È possibile tenere il percorso della cartella temporanea nella variabile $ OutPutPath come illustrato di seguito:

$OutPutPath = [io.path]::GetTempPath()

Si decide di denominare il nuovo file di testo dopo il nome dello script. A tale scopo, è necessario separare il nome dello script dal percorso che dello script è memorizzato in. È utilizzare il cmdlet percorso divisa per eseguire questo surgery. Il parametro –leaf indica il cmdlet per restituire il nome dello script. Se era volessimo il percorso di directory che contiene lo script, è necessario hanno utilizzato il parametro –parent. È possibile inserire il comando di percorso di divisione all'interno di una coppia di parentesi poiché desideriamo tale operazione venga eseguita in primo luogo, quindi si inserisce un segno di dollaro davanti le parentesi per creare un sub-expression che eseguire il codice e restituire il nome dello script. È Impossibile use.ps1 come l'estensione per il file di testo, ma che potrebbe essere fuorviante perché è l'estensione di uno script. È quindi sufficiente aggiungere un'estensione txt al nome file restituito e inserire l'intero sommario in una coppia di virgolette. Ora è utilizzare il cmdlet percorso join per creare un nuovo percorso del file di output. Il nuovo percorso è costituito da della cartella temporanea, memorizzati nella variabile $ OutPutPath e il nome del file creato utilizzando il percorso di divisione. È Impossibile hanno utilizzato in modifica e la concatenazione per creare il nuovo percorso del file ma è molto più affidabile utilizzare percorso join e percorso di divisione per eseguire questi tipi di operazioni. Ecco il codice sarà simile al:

Join-Path -path $OutPutPath -child "$(Split-Path $script-leaf).txt"
} #end Get-FileName

È ora necessario stabilire come si intende gestire file duplicati. È possibile richiedere all'utente pronunciando che esiste un file duplicato, utilizzando codice simile al seguente:

$Response = Read-Host -Prompt "$OutPutFile already exists. Do you wish to delete it <y / n>?"
if($Response -eq "y")
    { Remove-Item $OutPutFile | Out-Null }
ELSE { "Exiting now." ; exit }

È possibile implementare un tipo di algoritmo di denominazione che rende un backup del file esistente dalla ridenominazione con un'estensione .old. Se si fosse, il codice sarebbe simile nell':

if(Test-Path -path "$OutPutFile.old") { Remove-Item-Path "$OutPutFile.old" }
Rename-Item -path $OutPutFile -newname "$(Split-Path $OutPutFile -leaf).old"

O è semplicemente Impossibile eliminare il file esistente, in cui è che desidera eseguire. L'azione che si desidera eseguire avviene nella funzione OutPutFile Remove, che viene creata utilizzando la parola chiave Function e specificando il nome della funzione. Utilizziamo OutPutFile $ per fornire l'input per la funzione, come illustrato di seguito:

Function Remove-OutPutFile($OutPutFile)
{

Per determinare se il file esiste, è possibile utilizzare il cmdlet percorso test e specificare la stringa contenuta nella variabile $ OutPutFile al parametro di percorso. Il cmdlet percorso test restituisce solo un vero o un FALSO a seconda se viene trovato un file. Ciò significa è possibile utilizzare se l'istruzione per valutare l'esistenza di file. Se il file viene trovato, è possibile eseguire l'azione nel blocco di script. Se il file non viene trovato, il blocco di script non viene eseguito. Consente di verificare qui che il file non trova il primo comando e viene restituita false. Nel comando secondo il blocco di script non viene eseguito perché il file non trovano:

PS C:\> Test-Path c:\missingfile.txt
False
PS C:\> if(Test-Path c:\missingfile.txt){"found file"}
PS C:\>

All'interno della funzione OutPutFile Rimuovi, il se istruzione viene utilizzata per determinare se il file a cui fa riferimento il OutPutFile $ già esiste. In caso affermativo, viene eliminato utilizzando il cmdlet elementi rimuovere. Le informazioni che in genere viene restituite quando viene eliminato un file sono pipelined per il Out-Null cmdlet, fornendo per operazione invisibile all'utente. Il codice è illustrato di seguito:

if(Test-Path -path $OutPutFile) { Remove-Item $OutPutFile | Out-Null }
} #end Remove-OutPutFile

Dopo è stato creato il nome del file di output ed eliminare i file di output precedente che potrebbero essere posizione intorno a, è possibile recuperare i commenti dallo script. A questo scopo è creare la funzione Get-commenti e passarlo sia la variabile di script $ la variabile $ OutPutFile, come illustrato di seguito:

Function Get-Comments($Script,$OutPutFile)
{

Ora è leggere il testo dello script utilizzando il cmdlet Get-Content, a cui è passare il percorso dello script. Quando si utilizza Get-Content per leggere un file, il file è di leggere una riga alla volta e ogni riga viene passata oltre la pipeline. Se si fosse necessario archiviare il risultato in una variabile, si potrebbe disporre di una matrice. È possibile considerare la variabile $ simile a un qualsiasi altro matrice, tra cui ottenere il numero di elementi nella matrice tramite la proprietà Length e indicizzazione direttamente nella matrice, come illustrato di seguito:

PS C:\fso> $a = Get-Content -Path C:\fso\  GetSetieStartPage.ps1
PS C:\fso> $a.Length
62
PS C:\fso> $a[32]
($wmi.GetMultiStringValue($hkcu,$key,   $property2)).sValue

Ecco la riga che legge lo script di input e lo invia lungo la pipeline:

Get-Content -path $Script |

Successivamente è necessario per la ricerca all'interno di ogni riga per vedere se appartiene a un blocco di commento. Per esaminare ciascuna riga all'interno di una pipeline, è utilizzare il cmdlet oggetto ForEach, che è simile a un'istruzione ForEach…Next che consenta di lavorare con un singolo oggetto da all'interno di un insieme, uno alla volta. Il carattere di segno di graduazione Indietro (') viene utilizzato per continuare il comando per la riga successiva. L'azione che si desidera eseguire su ciascun oggetto poiché si tratta di attraverso la pipeline è contenuta all'interno di un blocco di script, che delineato con un set di parentesi graffe (detto anche le parentesi graffe). Questa parte della funzione Get-Content viene visualizzata di seguito:

ForEach-Object `
  { 

Quando si è all'interno del blocco di processo cmdlet oggetto ForEach, che si desidera esaminare la riga di testo. A tale scopo, è utilizzare se l'istruzione. La variabile $ _ automatico consente di rappresentare la riga corrente nella pipeline. È utilizzare l'operatore –match per eseguire una corrispondenza motivo di espressione regolare con la riga di testo. L'operatore –match restituisce un valore Boolean true o false in risposta al motivo che inizia il motivo nella parte destra dell'operatore –match. Questa sezione dello script è illustrata di seguito:

PS C:\fso> '$Comment = @"' -match '^\$comment\s?=\s?@"'
True

Modello di espressione regolare che si utilizza è costituito da un numero di caratteri speciali:

^ —Match all'inizio

\ —Escape caratteri in modo che il segno $ viene considerato come un carattere letterale e non il carattere speciale utilizzare nelle espressioni regolari

commento $ Caratteri —Literal

\s? —Zero o più spazi vuoti

= Carattere —Literal

\s? —Zero o più spazi vuoti

@ ", Caratteri letterali

Sezione di codice che esamina la riga di testo nella pipeline corrente è illustrata di seguito:

If($_ -match '^\$comment\s?=\s?@"')

Verrà creato un beginComment di variabile denominata $ viene utilizzato per contrassegnare all'inizio del blocco di commento. Se si apportano oltre l'istruzione –match, si è trovati all'inizio del blocco di commento. È possibile impostare la variabile come uguale su $ True come illustrato di seguito:

{ 
  $beginComment = $True
} #end if match @"

Successivo è verificare se è alla fine del blocco di commento. A tale scopo, è nuovamente utilizzare l'operatore –match. Questa volta è cercare la "@ sequenza di caratteri che viene utilizzato per chiudere un qui, la stringa. Se viene trovato, viene, è impostata la variabile beginComment $ su false:

If($_ -match '"@')
     { 
      $beginComment = $False
     } #end if match "@

Si è apportate oltre i primi due se le istruzioni: il primo elemento identifica all'inizio della qui-stringa e il secondo individua fondo qui le-stringa. Ora si desidera ottenere il testo da scrivere il file di commento. A tale scopo, si desidera che la variabile di beginComment di $ essere impostata su True. Si desidera anche assicurarsi che Microsoft non è presente l'in un segno di virgolette (@ ") di caratteri della riga perché sarebbe significa fondo qui le-stringa. Per rendere tale determinazione, è possibile utilizzare un composto se istruzione:

If($beginComment -AND $_ -notmatch '@"') 
     {

È ora scrivere il testo nel file di output. A tale scopo, è utilizzare la variabile $ _ automatica, che rappresenta la riga di testo corrente; è della pipeline la Out-File cmdlet. Il Out-File cmdlet riceve la variabile $ OutPutFile, che contiene il percorso del file di commento. È utilizzare il parametro –append per specificare che si desidera raccogliere tutti i commenti da script nel file di commento. Se è non è stato utilizza il parametro Accodamento, il file di testo conterrà l'ultimo commento perché, per impostazione predefinita, il Out-File cmdlet sovrascriverebbe il contenuto. È quindi chiudere tutte le parentesi graffe. È possibile considerare consigliabile aggiungere un commento dopo ogni parentesi graffe di chiusura che indica lo scopo della parentesi graffa. In questo modo molto più facile lo script per leggere, nonché la risoluzione dei problemi e mantenere:

$_ | Out-File -FilePath $OutPutFile -append
     } # end if beginComment
  } #end ForEach
} #end Get-Comments

Ora è creare una funzione denominata Get-OutPutFile che verrà aperto il file di output per la lettura. Poiché la cartella temporanea non è facile da trovare e avevamo il percorso al file nella variabile $ OutPutFile, è opportuno utilizzare lo script per aprire il file di output. La funzione Get-OutPutFile riceve un solo input variabile denominata $ OutPutFile, che contiene il percorso del file commento che si desidera aprire. Quando si chiama la funzione Get-OutPutFile, si passerà OutPutFile $ a esso. È possibile passare qualsiasi valore che si desidera per la funzione Get-OutPutFile e all'interno di funzione a cui il valore potrebbe essere fa riferimento la $ OutPutFile variabile. È anche possibile passare una stringa direttamente (senza l'utilizzo racchiudere la stringa tra virgolette) alla funzione:

Function Get-OutPutFile($OutPutFile)
{
 Notepad $OutPutFile
} #end Get-OutPutFile

Get-OutPutFile -outputfile C:\fso\GetSetieStartPage.ps1

In generale, quando scrivere uno script, se intende raccogliere i per passare a una funzione, è una buona idea encase i dati nel nome di variabile stesso che verrà utilizzato sia all'interno che all'esterno della funzione. Questo segue uno dei nostri consigliate per lo sviluppo di script: "non mess con la sezione di lavoro dello script." In questo esempio, quando si chiama la funzione è "eseguono lavoro." Per modificare questo in futuro gli script richiederebbe che è possibile modificare il valore letterale stringa. Inserendo la stringa in una variabile, è possibile modificare facilmente il valore della variabile. È, infatti, impostiamo per fornire il valore della variabile tramite la riga di comando o per mezzo di un'operazione eseguita in un'altra funzione. Quando possibile, evitare di inserire valori letterali stringa direttamente nello script. Nel codice che segue viene utilizzata una variabile per contenere il percorso del file che verrà passato alla funzione Get-OutPutFile:

Function Get-OutPutFile($OutPutFile)
{
 Notepad $OutPutFile
} #end Get-OutPutFile

$OutPutFile = "C:\fso\GetSetieStartPage.ps1"
Get-OutPutFile -outputfile $OutPutFile

La funzione di Get-OutPutFile completa è visualizzata di seguito:

Function Get-OutPutFile($OutPutFile)
{
 Notepad $OutPutFile
} #end Get-OutPutFile

Anziché digitare in una stringa letterale per il percorso del file di output, la variabile OutPutFile $ riceve il percorso che viene creato dalla funzione Get-nome file. La funzione Get-FileName riceve il percorso dello script che contiene i commenti da estrarre. Il percorso di questo script risulta tramite il parametro della riga di comando. Quando una funzione è un singolo parametro di input, è possibile passare alla funzione mediante un set di parentesi. Se, invece, la funzione utilizza due o più parametri di input, è necessario utilizzare la sintassi di nome –parameter:

$OutPutFile = Get-FileName($script)

Successivo si chiama la funzione OutPutFile Rimuovi (detto) e passarlo il percorso OutPutFile contenute nella variabile $ OutPutFile:

Remove-OutPutFile($OutPutFile)

Quando si sono garantite del nome del nostro file di output, viene chiamata la funzione Get-commenti per recuperare i commenti da script con un percorso è indicato dalla variabile $ script. I commenti verranno scritte nel file di output a cui si riferisce la variabile OutPutFile $. Questa riga di codice viene visualizzata di seguito:

Get-Comments -script $script -outputfile $OutPutFile

Quando i commenti sono tutti stato scritti nel file di output, viene infine chiamata la funzione Get-OutPutFile e passarla percorso di contenuto nella variabile $ OutPutFile. Se si preferisce il file di commento da aprire, è possibile facilmente commento la riga all'esterno dello script o eliminare semplicemente con la funzione di Get-OutPutFile dallo script del. Se non si è sicuri interessati a esaminare ogni file prima di salvarlo, consente di lasciare la riga di codice in posizione:

Get-OutPutFile($OutPutFile)

Quando viene eseguito lo script GetCommentsFromScript.ps1, Nessun messaggio di conferma viene visualizzato sullo schermo. La conferma sola che funziona lo script è la presenza di file di testo appena creato visualizzato nel blocco note, come illustrato nella Figura 5 .

fig05.gif

Nella figura 5 il nuovo file di testo visualizzato nel blocco note

Lo script GetCommentsFromScript.ps1 può essere facilmente adattato proprio modo di creazione di script o anche per la raccolta della documentazione di altri tipi dal file di registro basati su testo. È sufficiente è modificare il modello di espressione regolare viene utilizzato per contrassegnare l'inizio e la fine delle parti di testo si desidera raccogliere. Ci auguriamo è utilizzare lo script e invitare a partecipare ci nello Script Center, in cui è possibile pubblicare un nuovo Hey, Scripting Guy! articolo ogni giorno feriale.

ed Wilson , un noto esperto di script è l'autore di otto libri, tra cui Windows PowerShell, Scripting Guide (Microsoft Press, 2008) e Microsoft Windows PowerShell passo per passo (Microsoft Press, 2007). Ed contiene più di 20 certificazioni del settore, tra cui Microsoft Certified Systems Engineer (MCSE) e informazioni Certified di Systems Security Professional (CISSP). Nel tempo riserva, ha apprezzino woodworking, fotografia subacquee e scuba subacquee. E macchie.

Craig Liebendorfer è wordsmith e longtime editor Web di Microsoft. Craig ancora non ritiene c'è un processo che paga gli lavorare con le parole ogni giorno. Uno dei suoi elementi preferiti è irreverent umorismo in modo che deve adattare destra in questa posizione. Ha considerato suo accomplishment maggiore nella vita da sua figlia magnificent.