2016-07-25 72 views
1

自從PowerShell版本3以來,已經有非常明確的基於評論的幫助評論區塊: https://technet.microsoft.com/en-us/library/hh847834.aspx 我想知道的是,是否有像C#中版本控制PowerShell腳本的標準?我問,因爲我即將出版一模塊和PSD1文件有:放置PowerShell腳本版本號的標準位置在哪裏?

# Version number of this module. 
ModuleVersion = '1.0.0.0' 

在我自己的腳本,我用下面的標準:

<# 
.SYNOPSIS 
    <Synopsis goes here>. 

.DESCRIPTION 
    <Description goes here>. 

.EXAMPLE 
    Example.ps1 
    Runs with default parameters 

.NOTES 
    Author  : Glen Buktenica 
    Version : 1.0.0.0 20160725 Initial Build 
#> 

回答

2

AFAIK有做的沒有「官方」標準這個。

我見過人們版本的腳本最常見的使用方式是因爲你是下.NOTES部分

.NOTES 
    Version:  1.0 
    Author:   <Name> 
    Creation Date: <Date> 
    Purpose/Change: Initial script development 

我也看到了頭做這樣的,因爲這對剛過腳本的頂部#需要聲明。例如:#script 1.0 - 雖然不太頻繁

由於這是元信息和您的腳本版本將遵循您的模塊版本,我會說它應該是一個很好的解決方案,以繼續做你已經做的事情(和我見過的大多數人已經在做)。

0

這實際上很可惜,這不是標準化的,因爲它會打開一種方式,從您自己的代碼中獲取信息。例如如果您想在日誌文件中記錄版本,則不希望在cmdlet的另一個命令中重新定義該版本(僅僅是因爲它可能會被遺忘並與標題不同步)。

在我的標準PowerShell LOg-Entry framework,我使用了一些命令,使本次大會的信息容易獲得默認:

$My = @{File = Get-ChildItem $MyInvocation.MyCommand.Path; Contents = $MyInvocation.MyCommand.ScriptContents} 
If ($My.Contents -Match '^\s*\<#([\s\S]*?)#\>') {$My.Help = $Matches[1].Trim()} 
[RegEx]::Matches($My.Help, '(^|[\r\n])\s*\.(.+)\s*[\r\n]|$') | ForEach { 
    If ($Caption) {$My.$Caption = $My.Help.SubString($Start, $_.Index - $Start)} 
    $Caption = $_.Groups[2].ToString().Trim() 
    $Start = $_.Index + $_.Length 
} 
$My.Title = $My.Synopsis.Trim().Split("`r`n")[0].Trim() 
$My.Notes -Split("\r\n") | ForEach {$Note = $_ -Split(":", 2); If ($Note[0].Trim()) {$My[$Note[0].Trim()] = $Note[1].Trim()}} 
$My.Path = $My.File.FullName; $My.Folder = $My.File.DirectoryName; $My.Name = $My.File.BaseName 
$My.Arguments = (($MyInvocation.Line + " ") -Replace ("^.*\\" + $My.File.Name.Replace(".", "\.") + "['"" ]"), "").Trim() 

$My對象:

Name       Value 
----       ----- 
DESCRIPTION      <Description goes here>. 
EXAMPLE       Example.ps1... 
Name       My 
Folder       C:\Users\User\Scripts\Test\PowerShell 
Version      1.0.0.0 20160725 Initial Build 
Author       Glen Buktenica 
NOTES        Author  : Glen Buktenica... 
File       C:\Users\User\Scripts\Test\PowerShell\My.ps1 
Title       <Synopsis goes here>. 
Arguments      -test 
SYNOPSIS       <Synopsis goes here>. 
Path       C:\Users\User\Scripts\Test\PowerShell\My.ps1 
Contents      <# ... 
Help       .SYNOPSIS ...