Powershell小技巧之使用Get-ChildItem得到指定扩展名文件

当你使用Get-ChildItem获取输出文件列表时,你可能会发现即使用了-Filter参数也会比你预期的结果要多得多。

这里有一个例子,它不仅返回.ps1扩展名文件同时也返回.ps1xml扩展名文件:

Get-ChildItem -Path C:\windows -Recurse -ErrorAction SilentlyContinue -Filter *.ps1 

为了限制结果集只是你设置后的扩展名,可以添加一个命令的过滤器,以完善的结果:

Get-ChildItem -Path C:\windows -Recurse -ErrorAction SilentlyContinue -Filter *.ps1 |
 Where-Object { $_.Extension -eq '.ps1' } 

这将只返回指定的扩展名文件。

混合使用Get-ChildItem 参数

可以在同一命令中使用 Get-ChildItem cmdlet 的多个参数。在混合使用参数之前,请确保您了解通配符匹配。例如,以下命令将不会返回完整的结果:

PS> Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll

它只会返回C:\Windows\下的不以a-y开头的dll。原因是你给的是具体的只是C:\Windows\下的*.dll,而这与递归的参数-recurse矛盾,因为-recurse将返回的是C:\Windows\目录及递归目录下所有符合要求的dll。

以下是正确的代码:

若要为名称与特定模式相匹配的文件指定递归搜索,请使用 -Include 参数。

PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll
(0)

相关推荐

  • PowerShell中使用Get-ChildItem命令读取目录、文件列表使用例子和小技巧

    本文介绍一个PowerShell中使用Get-ChildItem这个cmdlet来获取目录下的文件列表.Get-ChildItem是获取子项目的意思,可以获取一个目录下的文件和子目录. 在DOS系统下,我们想查看一个目录下有哪些子目录和文件,我们可以通过dir命令来实现.在PowerShell中,dir命令貌似仍然可用.但洪哥告诉你,这个dir已经不是cmd.exe中的那个dir了,它是Get-ChildItem这个cmdlet的别名.也就是说,使用Get-ChildItem和使用dir得到的效

  • PowerShell实现简单的grep功能

    在PowerShell中,无法像*nix中一样使用grep命令,直接对一个目录下的所有文件进行内容查找,下面的PS脚本针对目录和文件进行了区分,借用Select-String命令,实现了内容查找,并显示查找到的文件和匹配内容所在行号. 使用的时候,只需要在shell中,输入: "命令所在目录"\grep.ps1 "需要查找的字符串" "需要查找的路径" param($str, $path=".\") #输入参数,默认在当前目录

  • PowerShell中使用Get-Alias命令获取cmdlet别名例子

    PowerShell中为了与原来的cmd命令保持兼容,特别为很多cmdlet设置了别名.这些别名跟cmd命令是同名的,但它代表着一个PowerShell中的cmdlet.比如dir这个cmd命令,它用于列出一个目录下的子文件夹和文件,在PowerShell有一个Get-ChildItem的cmdlet,它的作用也是列出一个目录下的子文件夹和文件,于是微软就给Get-ChildItem设置了一别名叫dir. 在PowerShell中,使用Get-Alias这个cmdlet,可以列出所有的别名,以及

  • PowerShell小技巧之实现文件下载(类wget)

    对Linux熟悉的读者可能会对Linux通过wget下载文件有印象,这个工具功能很强大,在.NET环境下提到下载文件大多数人熟悉的是通过System.Net.WebClient进行下载,这个程序集能实现下载的功能,但是有缺陷,如果碰上类似于-/scripts/?dl=417这类的下载链接将无法正确识别文件名,下载的文件通常会被命名为dl=417这样古怪的名字,其实对应的文件名是在访问这个链接返回结果的HTTP头中包含的.事实上微软也提供了避免这些缺陷的程序集System.Net.HttpWebR

  • PowerShell中使用Get-EventLog读取、筛选系统日志的例子

    本文介绍使用PowerShell读取系统日志,可以按日志名称.日志类型.时间等多个因素进行筛选.PowerShell中提供了一个叫Get-EventLog的cmdlet,使用它可以读取系统日志. 运行一下这个Get-EventLog的cmdlet试一下: 复制代码 代码如下: PS C:\Users\zhanghong> Get-EventLog -LogName System 噢!如果你感觉你被小编害了,cmd窗口一直在滚动个不停,那么按Ctrl+C先把它停下来.然后我解释一下,之所以发生这样

  • PowerShell中使用Get-Date获取日期时间并格式化输出的例子

    在PowerShell中有一个Get-Date的cmdlet,使用它可以直接返回当前的日期和时间.使用-Format参数可以返回当前的年.月.日.时.分.秒等. Get-Date的直接使用 在PowerShell中直接调用Get-Date,可以返回当前的日期和时间,包括年.月.日.时.分.秒.举例如下: 复制代码 代码如下: PS C:\Users\zhanghong> Get-Date 2013年9月9日 22:26:56 Write-Host中使用Get-Date 注意:在Write-Hos

  • PowerShell中使用Out-String命令把对象转换成字符串输出的例子

    本文介绍在PowerShell中如何将cmdlet输出的对象,转换为string字符串类型,便于后期的处理. PowerShell中的cmdlet输出的结果都是以对象(Object)的形式存在的.对于Object类型,在后期处理时有利有弊,当然利大于弊.但某些时候,我们希望cmdlet输出的结果直接是字符串,那应该怎么来实现呢? PowerShell中提供了一个Out-String的cmdlet,来看看它的介绍:Out-String cmdlet 将 Windows PowerShell 管理的

  • Powershell小技巧之使用Get-ChildItem得到指定扩展名文件

    当你使用Get-ChildItem获取输出文件列表时,你可能会发现即使用了-Filter参数也会比你预期的结果要多得多. 这里有一个例子,它不仅返回.ps1扩展名文件同时也返回.ps1xml扩展名文件: Get-ChildItem -Path C:\windows -Recurse -ErrorAction SilentlyContinue -Filter *.ps1 为了限制结果集只是你设置后的扩展名,可以添加一个命令的过滤器,以完善的结果: Get-ChildItem -Path C:\wi

  • Powershell小技巧之使用WMI工具

    WMI是一个强大的技术:只需要简单的指定一个WMI类名就能返回它类的所有实例: 复制代码 代码如下: PS> Get-WmiObject -Class Win32_BIOS SMBIOSBIOSVersion : 76CN27WW Manufacturer      : LENOVO Name              : 76CN27WW SerialNumber      : 1006250300406 Version           : LENOVO - 1 你如何知道它有哪些类呢?这

  • Powershell小技巧之开启关闭远程连接

    如果你要通过Powershell远程访问电脑.这时你必须在对方电脑(你想要访问的电脑),用管理员权限执行下面代码: 复制代码 代码如下: PS> Enable-PSRemoting -SkipNetworkProfileCheck -Force 一旦你这样执行了代码,你只要拥有目标电脑的本地管理员权限就能从其它窗体访问这台电脑了.当两台电脑在同一个域内你就可以直接指定计算机名而不需要它的IP的地址. 启动交互方式: 复制代码 代码如下: PS> Enter-PSSession -Compute

  • Powershell小技巧之获取MAC地址

    在Powershell中获取MAC地址不是很难.这里就有一种方法: 复制代码 代码如下: PS> getmac /FO CSV | ConvertFrom-Csv Physical Address                        Transport Name                         ----------------                        --------------                         5C-51-4F-6

  • Powershell小技巧之使用Jint引擎在PowerShell中执行Javascript函数

    这里演示如何利用PowerShell将一段Javascript函数字符串交给Jint引擎去执行. 执行Javascript函数 .Net版的Javascript解释器 可以从Git上获取Jint的代码,也可以从nuget上下载Jint的程序集. Jint是一个面向.Net的Javascript解释器.Jint不会把Javascript编译成.Net字节码,所以它非常适用于脚本小且运行起来速度快的工程,或者运行在不同平台上的脚本. PowerShell调用 拿到Dll根据-Path参数直接使用Ad

  • Powershell小技巧之获取当前的时间并转换为时辰

    午时三刻已到,行刑,刀下留人,现在到底是不是午时,能否让PowerShell告诉我呢? 好的, 没问题.从晚上23点到凌晨2点之间属于子时,每两个小时一个时辰,依次为"子丑寅卯辰巳午未申酉戌亥". 函数获取当前时辰 用PowerShell脚本实现: function Get-ChinaTimeAlias { param( [ValidateRange(0,23)] [int]$Hour = (get-date).Hour ) $timeAliasArray='子丑寅卯辰巳午未申酉戌亥'

  • Powershell小技巧之查询AD用户

    假若你登录到了一个AD中你可以轻松的查询AD目录.在先前的技巧中我们阐述了一个基本脚本.这里有一个可以自定义根目录的扩展方法(设置你的查询点),它支持同步查询(而不是递归到一个容器). 它同时也阐述了怎么从一个活动目录查找结果再将其转化成用户对象: $SAMAccountName = 'tobias' $SearchRoot = 'LDAP://OU=customer,DC=company,DC=com' $SearchScope = 'OneLevel' $ldap = "(&(obj

  • PowerShell小技巧之查找获取注册表路径

    在先前的技巧中我们说明如何将一个PS内置的路径格式转化成一个实际路径.这里介绍了一个例子.这段代码递归从HKEY_CURRENT_USER获取所有包含"powershell"词缀的键(简单的替换查询词缀将能获得你想要查询的任何东西) 复制代码 代码如下: Get-ChildItem -Path HKCU:\ -Include *PowerShell* -Recurse -ErrorAction SilentlyContinue|Select-Object -Property *Path

  • PowerShell小技巧实现IE Web自动化

    Windows 系统自带的Internet Explore +加上PowerShell 即可搞定. 今天就分享下这几天自己写的几个小函数,欢迎拍砖: # # 打开IE窗口 # function New-IEWindow { param( [string]$Url, [switch]$Visible, [switch]$FullScreen ) $Global:IEHost = new-object -com "InternetExplorer.Application" $Global:

  • PowerShell小技巧之观察UNC路径

    许多命令能支持UNC路径,但是UNC路径在脚本中看起来很奇怪.看看下面代码: PS> Test-Path -Path \\127.0.0.1\c$ True 它返回了真,证明UNC路径存在.接着改变当前的路径指向一个非文件系统路径接着测试: PS> cd hkcu:\ PS> Test-Path -Path \\127.0.0.1\c$ False 一样的路径但现在却获得了失败.这是因为UNC路径没有包含盘符,而PS需要根据盘符去分配当前合适位置.如果当前路径没有包含在磁盘路径下,Pow

随机推荐