【搜索列表中的关键字】

ipconfig | Select-String "IP"

#查询进程qq的详细信息
Get-Process qq
Get-Process qq | format-list *

#查看内存占用大于100mb的进程
Get-Process | where-object {$_.WorkingSet -gt 100mb}

#查看名称匹配字符"sql"的所有进程,casesensitive 区分大小写
Get-Process | Select-String "sql"
Get-Process | Select-String -pattern "sql"
Get-Process | Select-String "sql" -casesensitive

#查看前N列或者后N列
Get-Process | Select -First 1
Get-Process | Select -Last 1
Get-Process | select -Last 1 | fl *


【搜索列表中的关键字】

Get-Service

#搜索名为"MSSQLSERVER"的服务
Get-Service -Name "MSSQLSERVER"
Get-Service | Where-Object {$_.Name -eq "MSSQLSERVER"}

#从多列中选择两列输出 DisplayName,Name
Get-Service | Format-Table DisplayName,Name

#搜索名不包含字符"SQL"的服务
Get-Service | Where {$_.Name -notlike "*SQL*"}

#搜索名包含字符"SQL"的服务(名字显示不全省略,使用Format-Table -AutoSize可完整显示)
Get-Service -Name "*SQL*"
Get-Service | Where {$_.Name -like "*SQL*"}
Get-Service | Where-Object {$_.Name -like '*SQL*' }
Get-Service | Where-Object { $_.Name -match "SQL" }
Get-Service | Where-Object { $_.Name -match "SQL" } | Format-Table -AutoSize
Get-Service | ? { $_.Name -match "SQL" } | Format-Table -AutoSize


其他查询

Get-Service | ForEach-Object { $_.name }
Get-Service | select -first 5
Get-Service | select -last 5
Get-Service | select -last 5 | & {begin {Get-Date} process{ $_.Name }end {Get-Date}}


格式化输出方式(更多参考文章下面表格)

"{0:D}" -f (Get-Date)
"Random:{0:0%}" -f (get-random)

"Date:{0:D} Random: {1:0%}" -f (Get-Date),(get-random)


#列name右对齐({0,30}表示 -f 右边的第一列,长度为30,正30为右对齐)
dir | ForEach-Object { "{0,30}" -f $_.name}

#列name左对齐(负30为左对齐)
dir | ForEach-Object { "{0,-30}" -f $_.name}

#{0,-10}: 0为第一列Length,-10为左对齐,长度为10
#{1,20}: 1为第二列name,20为右对齐,长度为20
dir | ForEach-Object { "{1,20} 空格 {0,-10}" -f $_.Length,$_.name}



【指定按某列或多列排序】

#默认升序
Get-Service | Sort-Object DisplayName
Get-Service | Sort-Object -Descending DisplayName
Get-Service | Sort-Object @{expression="Status";Descending=$true},@{expression="DisplayName";Ascending=$true}


【搜索文件中的关键字】

Select-String -path F:\test.txt -pattern "SQL"
Select-String -path F:\*.txt -pattern "SQL"
Select-String -path F:\*.txt -pattern "SQL","Get" -notmatch


【输出到系统文件】

Get-Service | Sort-Object DisplayName | Format-Table DisplayName >E:\kk.txt
Get-Service | Sort-Object DisplayName | Format-Table DisplayName >>E:\kk.txt



【输出文件内容】

Get-Content E:\kk.txt
Get-Content E:\*.txt | Select-String "Linux"



字符串操作符

操作符

描述

示例

*

代表一个字符串

“PsTips.Net”-like “*”

+

合并两个字符串

“Power”+ “Shell”

-replace,-ireplace

替换字符串,大小写不敏感

“PsTips.Net”-replace “tip”,”1″

-creplace

替换字符串,大小写敏感

“PsTips.Net”-replace “Tip”,”1″

-eq,-ieq

验证是否相等,大小写不敏感

“Power”-eq “power”

-ceq

验证是否相等,大小写敏感

“Power”-eq “Power”

-like,-ilike

验证字符串包含关系,允许模式匹配,大小写不敏感

“PsTips.Net”-like “p*”

-clike

验证字符串包含关系,允许模式匹配,大小写敏感

“PsTips.Net”– clike “P*”

-notlike,-inotlike

验证字符串不包含关系,允许模式匹配,大小写不敏感

“PowerShell”-notlike “PS*”

-cnotlike

验证字符串不包含关系,允许模式匹配,大小写敏感

“PowerShell”-cnotlike “PO*”

-match,-imatch

验证模式匹配,大小写不敏感

“PowerShell”-match “P*”

-cmatch

验证模式匹配,大小写敏感

“Hello”-match “[ao]”

-notmatch,-inotmatch

验证模式不匹配,大小写不敏感

“Hello”-notmatch “[ao]”

-cnotmatch

验证模式不匹配,大小写敏感

“Hello”-cnotmatch “[ao]”


格式化

符号

类型

调用示例

输入结果

#

数字占位符

“{0:(#).##}”-f $value

(1000000)

%

百分号

“{0:0%}”-f $value

100000000%

,

千分符

“{0:0,0}”-f $value

1,000,000

,.

一千的整数倍

“{0:0,.}” -f $value

1000

.

小数点

“{0:0.0}”-f $value

1000000.0

0

占位符 0

“{0:00.0000}”-f $value

1000000.0000

c

货币

“{0:c}”-f $value

¥1,000.00

d

十进制

“{0:d}”-f $value

1000000

e

科学计数法

“{0:e}”-f $value

1.000000e+006

e

指数通配符

“{0:00e+0}”-f $value

10e+5

f

保留小数位

“{0:f}”-f $value

1000000.00

g

常规

“{0:g}”-f $value

1000000

n

千分符

“{0:n}”-f $value

1,000,000.00

x

十六进制

“0x{0:x4}”-f $value

0x4240



日期格式化

符号

类型

调用示例

输出

d

短日期格式

“{0:d}”–f $value

2013/6/1

D

长日期格式

“{0:D}”–f $value

2013年6月1日

t

短时间格式

“{0:t}”–f $value

“{0:t}”–f $value

T

长时间格式

“{0:T}”–f $value

23:18:50

f

完整日期和时间(短)

“{0:f}”–f $value

2013年6月1日23:18

F

完整日期和时间(长)

“{0:F}”–f $value

2013年6月1日23:18:50

g

标准时间 (短)

“{0:g}”–f $value

2013/6/123:18

G

标准时间长 (长)

“{0:G}”–f $value

2013/6/123:18:50

M

月日格式

“{0:M}”–f $value

6月1日

r

RFC1123日期格式

“{0:r}”–f $value

Sat,01 Jun 2013 23:18:50 GMT

s

排序日期格式

“{0:s}”–f $value

2013-06-01T23:18:50

u

通用日期格式

“{0:u}”–f $value

2013-06-0123:18:50Z

U

通用排序日期 GMT格式

“{0:U}”–f $value

2013年6月1日15:18:50

Y

年/月格式模式

“{0:Y}”–f $value

2013年6月

自定义日期格式

dd

一个月中天

“{0:dd}”-f $value

01

ddd

星期的缩写

“{0:ddd}”-f $value

周六

dddd

完整星期

“{0:dddd}”-f $value

星期六

gg

纪年法

“{0:gg}”-f $value

公元

hh

小时0-12

“{0:hh}”-f $value

11

HH

小时0-23

“{0:HH}”-f $value

23

mm

分钟

“{0:mm}”-f $value

18

MM

月份

“{0:MM}”-f $value

06

MMM

月份缩写

“{0:MMM}”-f $value

六月

MMMM

完整月份

“{0:MMMM}”-f $value

六月

ss

“{0:ss}”-f $value

55

tt

上午或者下午

“{0:tt}”-f $value

下午

yy

两位数字的年份

“{0:yy}”-f $value

13

yyyy

四位数字的年份

“{0:yyyy}”-f $value

2013

zz

不包含分钟的时区

“{0:zz}”-f $value

+08

zzz

包含分钟的时区

“{0:zzz}”-f $value

+08:00