Powershell小技巧之查找脚本中的函数
要快速获取你PS脚本库中所有文件的函数名,你可以这样做:
filterFind-Function
{
$path=$_.FullName
$lastwrite=$_.LastWriteTime
$text=Get-Content-Path$path
if($text.Length-gt0)
{
$token=$null
$errors=$null
$ast=[System.Management.Automation.Language.Parser]::ParseInput($text,[ref]$token,[ref]$errors)
$ast.FindAll({$args[0]-is[System.Management.Automation.Language.FunctionDefinitionAst]},$true)|
Select-Object-PropertyName,Path,LastWriteTime|
ForEach-Object{
$_.Path=$path
$_.LastWriteTime=$lastwrite
$_
}
}
}
这将扫描出你用户配置文件夹下的所有PS脚本中的函数:
PS>dir$home-Filter*.ps1-Recurse-Exclude*.ps1xml|Find-Function Name Path LastWriteTime ---- ---- ------------- Inject-LogonCredentials C:\Users\Tobias\Desktop...06.01.201402:43:00 Test-Command C:\Users\Tobias\Desktop...06.03.201410:17:02 Test C:\Users\Tobias\Desktop...30.01.201409:32:20 Get-WebPictureOriginal C:\Users\Tobias\Desktop...11.12.201311:37:53 Get-ConnectionString C:\Users\Tobias\Documen...23.05.201410:49:09 Convert-SID2User C:\Users\Tobias\Documen...23.05.201415:33:06 Lock-Screen C:\Users\Tobias\Documen...19.03.201412:51:54 Show-OpenFileDialog C:\Users\Tobias\Documen...16.05.201413:42:16 Show-UniversalData C:\Users\Tobias\Documen...16.05.201413:23:20 Start-TimebombMemory C:\Users\Tobias\Documen...23.05.201409:12:28 Stop-TimebombMemory C:\Users\Tobias\Documen...23.05.201409:12:28 (...)
将结果用管道传给Out-GridView将能得到更完美的信息。
支持PS3.0及以后