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及以后