【PowerShell 一天一练】 5. Get-Member 以及简单字符串操作

【题外话】国庆几天都去玩了,一方面是没多少时间,另外一方面也确实遇到了些困难(呵呵不知道怎么样提取出winrar的路径了),不过好在今天终于可以继续:)

 

  我可以用这个方式得到“test”的值:

 

1.     $s = gp hklm:/Software/Classes/WinRAR/shell/open/command

2.     $s.test 

 

但是对默认值不知道该怎么办,试了一下,无论用 $s.default 还是 $s.(default) 都不可以,不知道哪位高人可以指点下。

 

研究了一番,想了另外一招,如下:

 

1.        $s = gp hklm:/Software/Classes/WinRAR/shell/open/command | Get-Member –membertype noteproperty

2.        $a= $s[0].Definition.Split(‘”’)

3.        $b = $a[1].ToUpper().replace(“WINRAR.EXE”, “UNRAR.EXE”)

 

最后$b里存放的就是unrar.exe的具体路径。

 

大概解释一下代码吧:

Get-Member 可以拿到一个 object 里面的所有成员, 如果执行

            $s = gp hklm:/Software/Classes/WinRAR/shell/open/command

            $s.GetType()

你会看到 $s 是 PSCustomObject 类型的。打印 $s (直接敲 $s 然后回车) 可以看到它包括了若干属性。加上 –membertype参数主要是因为路径所在的属性是 "noteproperty"。

 

经过  Get-Member  后会得到若干个属性的集合,其中第一个是包含了路径的(我们的兴趣所在),包含在它的Definition段,这个段的值大致是这样: System.String (default)="d:/winrar/winrar.exe" "%1"

 

所以接下来我用 Split 函数将其分割开并放到一个数组里,使用双引号为分隔符,结果数组里第二个元素就是 d:/winrar/winrar.exe,然后要把 winrar.exe 替换为 unrar.exe 就好(先做一个转为大写是为了确保替换的源字符串是 WINRAR.EXE)。

            

【又及】今天读了 Manning Windows PowerShell in Action,做了个凌乱的笔记,也附在blog里作为参考。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值