是否有一种使用Write-Host在Powershell中记录当前行的方法?

时间:2016-02-05 16:24:51

标签: powershell

我想从C ++宏中记得我可以输出当前行号的东西。它是完全相同的代码,但预处理器将用当前行替换宏。我想在PowerShell中使用这样的东西,所以我可以告诉TFS 2015告诉我第6行有错误是什么意思,但第6行是注释。显然我所看到的以及PowerShell"认为"第6行不同。

1 个答案:

答案 0 :(得分:1)

首先,定义以下别名:

function Get-ScriptLineNumber { return $MyInvocation.ScriptLineNumber }
function Get-ScriptName { return $MyInvocation.ScriptName }

new-item alias:__LINE__ -value Get-ScriptLineNumber
new-item alias:__FILE__ -value Get-ScriptName 

要测试它们,请将以下代码保存在脚本文件中(我们称之为“test.ps1”)并从您的PowerShell提示符中调用它:

function Hello                                                              #1
{                                                                           #2
    param (                                                                 #3
            [parameter(Mandatory = $true)] [string] $receiver               #4
    )                                                                       #5
                                                                            #6
    $i = 0                                                                  #7
                                                                            #8
    # Say Hello                                                             #9
    # Another comment                                                       #10
    # and yet another one                                                   #11
                                                                            #12
    Write-Host "Line:" $(__LINE__) "File:" $(__FILE__) "Hello $receiver"    #13
}                                                                           #14

Hello "World"

当你运行它时,你会得到以下结果:

Line: 13 File: D:\Temp\test.ps1 Hello World