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