Powershell 之文本处理

 powershell  Powershell 之文本处理已关闭评论
6月 282017
 

示例1:  解析netstat -ant结果为对象

 Posted by at 下午 3:10

powershell 之hashtable

 powershell  powershell 之hashtable已关闭评论
6月 272017
 

hashtable的构造:

注意:

  1. 使用 花括号, 数组使用圆括号
  2. 使用 等于号 (=), 而非 ( =>
  3. key不需要引号
  4. 元素分隔符为分号, 而非 逗号,数组使用逗号
  5. 最后一个元素后面的分号可有可无
  6. 多个空的分号等于没有
  7. 使用Count方法计算数量, 数组使用Length ; 方法后面的圆括号可以省略

遍历:

使用cmdlet版的foreach遍历:

注意:

  1. 必须 使用GetEnumerator() 方法后才能foreach,且括号不能省略

遍历出key信息:

注意:

  1. 遍历的其实是keys
 Posted by at 下午 1:25

powershell 之 foreach

 powershell  powershell 之 foreach已关闭评论
6月 262017
 

原材料:

 

foreach有三种形态:

cmdlet形态,如下:

foreach 语句形态,如下:

foreach方法形态,如下:

 

 

参考:

https://ss64.com/ps/foreach.html

https://ss64.com/ps/foreach-method.html

 

注意: foreach一般是看不到key的,如何才能看到key呢?

 Posted by at 下午 2:12

Powershell 之split

 powershell  Powershell 之split已关闭评论
6月 262017
 

如下脚本,通过where cmdlet过滤出来netstat中已连接状态的连接:

可以发现, 使用字符串的split选项可以凑效,但是,使用字符串的split方法不能凑效; 因为split选项支持正则分隔符,split方法不支持正则分隔符,其实第二种写法是不对的。split方法只能按照单个字符分隔

参考: https://msdn.microsoft.com/en-us/library/System.String.Split(v=vs.110).aspx

统计每种tcp状态的数量:

 

其中,begin、end都很类似awk的用法

改进: 如何按照名字的升序进行输出呢:

注意这里sort的使用,需要使用 GetEnumerator(), 因为$arr 本身是一个大对象,本没有迭代为多个对象输出,是不会被sort的,所以需要$arr.GetEnumerator() ,然后输出给sort

tips: sort的 -Property 可以不写,直接 sort name (或)sort value

参考: https://blogs.technet.microsoft.com/heyscriptingguy/2014/09/28/weekend-scripter-sorting-powershell-hash-tables/

 

格式化输出:

 Posted by at 上午 11:40

PowerShell 入门

 powershell, Windows  PowerShell 入门已关闭评论
2月 182017
 

PowerShell 是一个可以操作对象的高级shell,是一个支持模块的shell。

如何编写模块?参考:http://www.jb51.net/article/56229.htm 基本上就是在模块目录下写一个包含有一些函数的文件,一个这种文件就是一个模块,然后配之以一个同名(不同扩展名)的manifest文件

 

两种注释方式:

段注释:

 

行注释:

 

实例:

web请求:

方法1:http://blog.csdn.net/qq_34352010/article/details/53572234

方法2:

 

文本处理:

http://www.pstips.net/processing-text-1.html

http://www.pstips.net/processing-text-2.html

http://www.pstips.net/processing-text-3.html

解析url:http://www.pstips.net/processing-text-4.html

获取所有的IPv4地址:

获取ifconfig的ipv4地址:

注意: 正则表达式的正确使用使得事情变得更加利索

 

PowerShell 显示气球提示框: http://www.pstips.net/powershell-displaying-balloon-tip.html

多个对象之间用逗号分隔:

单引号与双引号:

单引号中的单引号,双引号中的双引号:

单引号中连续的两个单引号解释为1个单引号,双引号中连续的两个双引号解释为1个双引号

转移字符

一般都是用反斜线转义,但是powershell中使用反引号来转义,如:

 

命令结果赋值给变量的写法:

使用 $( cmd ) 的写法更舒服一些,更加接近于bash的写法

 

ISE比命令行写起来会舒服一些,不但有提示,还方便查帮助

PowerShell是已模块的形式添加功能的

选中命令时,下面就会出现命令的参数信息,按住ctrl点击命令时,参数信息界面就会隐藏

 

 Posted by at 下午 9:33