1 启动 powershell
2
3 #字符串操作
4 对象操作 "hello".Length
5
6
7 #进程操作
8 PS C:\> notepad
9 PS C:\> $process=get-process notepad
10 PS C:\> $process.Kill()
11
12
13 #默认对象操作
14 PS C:\> 40GB/650MB
15 63.0153846153846
16
17 #时间操作
18 PS C:\> [DateTime]"2009-12-5" - [DateTime]::Now
19 Days : -58
20 Hours : -14
21 Minutes : -53
22 Seconds : -58
23 Milliseconds : -510
24 Ticks : -50648385105314
25 TotalDays : -58.6208160941134
26 TotalHours : -1406.89958625872
27 TotalMinutes : -84413.9751755233
28 TotalSeconds : -5064838.5105314
29 TotalMilliseconds : -5064838510.5314
30
31 #时间对象操作
32 PS C:\> $result = [DateTime]"2009-12-5" - [DateTime]::Now
33 PS C:\> $result.TotalDays
34 -58.6213450248299
35
36
37 #查询今天星期几
38 PS C:\Users\vv> $date=Get-Date
39 PS C:\Users\vv> $date.DayOfWeek
40 Monday
41
42
43 #查找powershell命令中包含单词process的命令
44 PS C:\> Get-Command *process*
45 CommandType Name Definition
46 ----------- ---- ----------
47 Application api-ms-win-core-processenvir... C:\Windows\system32\api-ms-w...
48 Application api-ms-win-core-processthrea... C:\Windows\system32\api-ms-w...
49 Cmdlet Debug-Process Debug-Process [-Name] <Strin...
50 Cmdlet Get-Process Get-Process [[-Name] <String...
51 Application microsoft-windows-kernel-pro... C:\Windows\system32\microsof...
52 Application qprocess.exe C:\Windows\system32\qprocess...
53 Cmdlet Start-Process Start-Process [-FilePath] <S...
54 Cmdlet Stop-Process Stop-Process [-Id] <Int32[]>...
55 Cmdlet Wait-Process Wait-Process [-Name] <String...
56
57
58 #检索donet中对象的属性和方法
59 PS C:\> "aaa" | Get-Member
60
61 TypeName: System.String
62
63 Name MemberType Definition
64 ---- ---------- ----------
65 Clone Method System.Object Clone()
66 CompareTo Method int CompareTo(System.Object value), i...
67 Contains Method bool Contains(string value)
68 CopyTo Method System.Void CopyTo(int sourceIndex, c...
69 EndsWith Method bool EndsWith(string value), bool End...
70 Equals Method bool Equals(System.Object obj), bool ...
71 GetEnumerator Method System.CharEnumerator GetEnumerator()
72 GetHashCode Method int GetHashCode()
73 GetType Method type GetType()
74 GetTypeCode Method System.TypeCode GetTypeCode()
75 IndexOf Method int IndexOf(char value), int IndexOf(...
76 IndexOfAny Method int IndexOfAny(char[] anyOf), int Ind...
77 Insert Method string Insert(int startIndex, string ...
78 IsNormalized Method bool IsNormalized(), bool IsNormalize...
79 LastIndexOf Method int LastIndexOf(char value), int Last...
80 LastIndexOfAny Method int LastIndexOfAny(char[] anyOf), int...
81 ...
82
83
84 #统计所有正在运行的进程的句柄数
85 PS C:\> $handleCount=0
86 PS C:\> foreach($process in Get-process) { $handleCount +=$process.Handles }
87 PS C:\> $handleCount
88 23318
89
90 #直接调用donet对象,获取网页内容
91 PS C:\> $webClient = New-Object System.Net.WebClient
92 PS C:\> $content = $webClient.DownloadString("http://www.baidu.com")
93 PS C:\> $content.Substring(0,1000)
94 <html><head><meta http-equiv=Content-Type content="text/html;charset=gb2312"><t
95 itle>百度一下,你就知道 </title><style>body{margin:4px 0}p{margin:0;paddin
96 g:0}img{border:0}td,p,#u{font-size:12px}#b,#u,#l td,a{font-family:arial}#kw{fon
97 t:16px Verdana;height:1.78em;padding-top:2px}#b{height:30px;padding-top:4px}#b,
98 #b a{color:#77c}#u{padding-right:10px;line-height:19px;text-align:right;margin:
99 0 0 3px !important;margin:0 0 10px}#sb{height:2em;width:5.6em}#km{height:50px}#
100 l{margin:0 0 5px 38px}#l td{padding-left:107px}p,table{width:650px;border:0}#l
101 td,#sb,#km{font-size:14px}#l a,#l b{margin-right:1.14em}a{color:#00c}a:active{c
102 olor:#f60}#hp{position:absolute;margin-left:6px}#lg{margin:-26px 0 -44px}#lk{wi
103 dth:auto;line-height:18px;vertical-align:top}form{position:relative;z-index:9}<
104 /style></head>
105 <body><div id=u><a href=http://passport.baidu.com/?login&tpl=mn>登录</a></div><
106 center><img src=http://www.baidu.com/img/baidu_logo.gif width=270 height=129 us
107 emap="#mp" id=lg><br><br><br><br><table cellpadd
108
109
110 #获取系统信息
111 PS C:\> Get-WmiObject Win32_Bios
112
113 SMBIOSBIOSVersion : 2TKT00AUS
114 Manufacturer : LENOVO
115 Name : Default System BIOS
116 SerialNumber : 1111111
117 Version : LENOVO - 5000821
118
119
120 #导航文件系统
121 PS C:\> Set-Location c:\
122 PS C:\> Get-ChildItem
123
124
125 目录: C:\
126
127
128 Mode LastWriteTime Length Name
129 ---- ------------- ------ ----
130 d---- 2010/1/7 14:20 bea
131 d---- 2010/1/7 14:20 BEA WebLogic E-Business Platform
132 d---- 2009/12/7 13:02 dzh
133 d---- 2010/1/2 15:48 his
134 d---- 2009/7/14 10:37 PerfLogs
135 d-r-- 2010/1/25 12:58 Program Files
136 d-r-- 2009/12/31 19:11 Users
137 d---- 2009/11/7 9:52 usr
138 d---- 2010/1/28 3:16 Windows
139 -a--- 2009/6/11 5:42 24 autoexec.bat
140 -a--- 2009/6/11 5:42 10 config.sys
141 -a--- 2009/10/28 13:37 454656 putty.exe
142
143
144 #导航注册表
145 PS C:\> Set-Location HKCU:\Software\Microsoft\Windows\
146 PS HKCU:\Software\Microsoft\Windows\> Get-ChildItem
147
148
149 Hive: HKEY_CURRENT_USER\Software\Microsoft\Windows
150
151
152 SKC VC Name Property
153 --- -- ---- --------
154 33 0 CurrentVersion {}
155 0 11 DWM {Composition, CompositionPolicy, Colo...
156 3 0 Shell {}
157 1 0 ShellNoRoam {}
158 2 0 TabletPC {}
159 3 12 Windows Error Reporting {ConfigureArchive, DisableArchive, Di...
160
161
162 #导航证书
163 PS C:\Users\vv> Set-Location cert:\CurrentUser\Root
164 PS cert:\CurrentUser\Root> Get-ChildItem
165
166
167 目录: Microsoft.PowerShell.Security\Certificate::CurrentUser\Root
168
169
170 Thumbprint Subject
171 ---------- -------
172 CDD4EEAE6000AC7F40C3802C171E30148030C072 CN=Microsoft Root Certificate Auth...
173 BE36A4562FB2EE05DBB3D32323ADF445084ED656 CN=Thawte Timestamping CA, OU=Thaw...
174 A7217F919843199C958C128449DD52D2723B0A8A CN=Alibaba.com Corporation Root CA...
175 A43489159A520F0D93D032CCAF37E7FE20A8B419 CN=Microsoft Root Authority, OU=Mi...
176 7F88CD7223F3C813818C994614A89C99FA3B5247 CN=Microsoft Authenticode(tm) Root...
177 742C3192E607E424EB4549542BE1BBC53E6174E2 OU=Class 3 Public Primary Certific...
178 654E9FADD2032AE1B87D6263AF04FD7FEE38D57C CN=iTruschina CN Root CA-3, OU=Chi...
179 46F168AF009C28C18F452EB85F5E8747892B3C8B CN=iTruschina CN Root CA-2, OU=Chi...
180 245C97DF7514E7CF2DF8BE72AE957B9E04741E85 OU=Copyright (c) 1997 Microsoft Co...
181 240A61A2577970625B9F0B81283C4AA4037217B1 CN=iTruschina CN Root CA-1, OU=Chi...
182 18F7C1FCC3090203FD5BAA2F861A754976C8DD25 OU="NO LIABILITY ACCEPTED, (c)97 V...
183
184
185 #显示所有进程
186 PS C:\Users\vv> Get-Process
187
188 Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
189 ------- ------ ----- ----- ----- ------ -- -----------
190 527 28 40784 44864 243 18.94 4956 360SE
191 537 29 49144 59340 248 9.09 5276 360SE
192 924 20 17580 2504 132 3768 360tray
193 160 5 16080 7852 41 2036 audiodg
194 318 24 6524 7008 124 188 CCProxy
195 56 5 796 288 33 1232 CNAB4RPK
196 61 4 1568 6916 63 0.19 5064 conhost
197 60 4 1532 3628 63 0.06 5584 conhost
198 645 6 2076 1204 72 380 csrss
199 649 9 8148 11056 185 440 csrss
200 ......
201
202
203 #搜索所有包含Get动词的命令
204 PS C:\Users\vv> Get-Command -Verb Get
205
206 CommandType Name Definition
207 ----------- ---- ----------
208 Cmdlet Get-Acl Get-Acl [[-Path] <String[]>]...
209 Cmdlet Get-Alias Get-Alias [[-Name] <String[]...
210 Cmdlet Get-AuthenticodeSignature Get-AuthenticodeSignature [-...
211 Cmdlet Get-ChildItem Get-ChildItem [[-Path] <Stri...
212 Cmdlet Get-Command Get-Command [[-ArgumentList]...
213 Cmdlet Get-ComputerRestorePoint Get-ComputerRestorePoint [[-...
214 ......
215
216
217 #帮助
218 PS C:\Users\vv> Get-Help Get-Verb -Full/-Detailed/-Examples
219
220
221 #调用powershell脚本
222 PowerShell "& 'C:\get-report.ps1' arguments"
223
224
225 #循环
226 PS C:\Users\vv> 1..10 | % {"aaa"}
227 aaa
228 aaa
229 aaa
230 aaa
231 aaa
232 aaa
233 aaa
234 aaa
235 aaa
236 aaa
237
238
239 #数据加密(Base64)
240 PS C:\Users\vv> $bytes=[System.Text.Encoding]::Unicode.GetBytes("aaa")
241 PS C:\Users\vv> $encodedString=[Convert]::ToBase64String($bytes)
242 PS C:\Users\vv> $encodedString
243 YQBhAGEA
244
245
246 #检查命令是否执行成功
247 PS C:\Users\vv> $lastExitCode
248 0
249 PS C:\Users\vv> $?
250 True
251
252
253 #性能测试,计算一个命令执行的时间
254 PS C:\Users\vv> Measure-Command { Start-Sleep -Milliseconds 337 }
255 Days : 0
256 Hours : 0
257 Minutes : 0
258 Seconds : 0
259 Milliseconds : 340
260 Ticks : 3404713
261 TotalDays : 3.9406400462963E-06
262 TotalHours : 9.45753611111111E-05
263 TotalMinutes : 0.00567452166666667
264 TotalSeconds : 0.3404713
265 TotalMilliseconds : 340.4713
266
267
268 #foreach 循环
269 foreach($alias in Get-Alias){
270 $alias
271 }
272
273
274 #显示为表格
275 PS C:\Users\vv> Get-Process | Format-Table Name,WS -Auto
276
277
278 #复制文件
279 Copy-Item c:\temp\*.txt c:\temp\backup\ -verbose
280
281
282 #列出所有已经停止的服务
283 PS C:\Users\vv> Get-Service | Where-Object { $_.Status -eq "Stopped" }
284 #列出当前位置的所有子目录
285 PS C:\Users\vv> Get-ChildItem | Where-Object { $_.PsIsContainer }
286
287
288 #循环
289 PS C:\Users\vv> 1..10 | Foreach-Object { $_ * 2 }
290
291
292 #获取正在运行的记事本程序的进程列表,然后等待他们退出
293 PS C:\Users\vv> $notepadProcesses = Get-Process notepad
294 PS C:\Users\vv> $notepadProcesses | Foreach-Object { $_.WaitForExit() }
295
296 #其它循环关键字
297 for foreach do while
298
299
300 #从管道中选择接收值
301 PS C:\Users\vv> dir | Select Name
302
303
304 #释放变量占用的内存空间
305 $processes = $null
306
307
308 #显示所有变量
309 PS C:\> dir variable:\
310
311 PS C:\> dir variable:\s*
312
313 #显示文件内容
314 PS C:\> ${c:\autoexec.bat}
315
316 #变量范围
317 $Global:myVariable1 = value1
318 $Script:myVariable2 = value2
319 $Local:myVariable3 = value3
320
321
322 #静态方法 调用 donet
323 PS C:\> [System.Diagnostics.Process]::GetProcessById(0)
324
325 Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
326 ------- ------ ----- ----- ----- ------ -- -----------
327 0 0 0 24 0 0 Idle
328
329
330 Get-Process Notepad
331 #Get-Process 代替 System.Diagnostics.Process
332
333 $process.WaitForExit() #暂停直到结束
334
335 Get-Date 等同于 [System.DateTime]::Now
336
337 #创建对象
338 PS C:\> $generator = New-Object System.Random
339 PS C:\> $generator.NextDouble()
340 0.121309703738107
341
342 PS C:\> (New-Object Net.WebClient).DownloadString("http://www.baidu.com")
343
344 #先加载库文件
345 PS C:\> [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
346 GAC Version Location
347 --- ------- --------
348 True v2.0.50727 C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0....
349 #创建后保存
350 PS C:\> $image = New-Object System.Drawing.Bitmap source.gif
351 PS C:\> $image.Save("source_1.jpg","JPEG")
352
353
354 PS C:\> [Reflection.Assembly]::LoadWithPartialName("System.Web")
355 GAC Version Location
356 --- ------- --------
357 True v2.0.50727 C:\Windows\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7...
358
359 PS C:\> [Web.HttpUtility]::UrlEncode("http://search.msn.com")
360 http%3a%2f%2fsearch.msn.com
361
362
363 #缩短类名
364 PS C:\> $math=[System.Math]
365 PS C:\> $math::Min(1,10)
366 1
367
368 #调用COM组件
369 $sapi = New-Object -Com Sapi.SpVoice
370 $sapi.rate=0
371 $sapi.Speak("一直以为...只要隐着身,就没有美女认得出我是帅哥!但是...我错了,像我这样拉风的男人,就好比那暗夜里的萤火虫,田地里的金龟子,是那样的鲜明,那样的出众,特别是我那忧郁的眼神,凌乱的头发,嘴里叼着四块五的红金龙,还有我兜里露出来的半包旺旺雪饼,深深地出卖了我。")
372
373
374 #获取对象类型
375 $date = Get-Date
376 $date.GetType().ToString()
377
378
379 #正则表达式匹配
380 PS C:\Users\vv> "Hello World" -match "Hello"
381 True
382
383 #条件运算符
384 PS C:\Users\vv> $data = "Hello World"
385 ($data -like "*llo w*") -and ($data.Length -gt 10)
386 True
387
388 #逻辑运算关键字
389 -eq -ne -ge -lt -le -like -notlike -match -notmatch -contains -notcontains -is isnot
390
391
392 #条件语句
393 if elseif else
394
395 $a=20
396 switch($a)
397 {
398 {$_ -lt 32} {"aaaa";break}
399 32 {"bbb";break}
400 default {"ccc"}
401 }
402
403 #循环
404 #for foreach while do foreach-object
405 foreach($file in dir){
406 "File length:"+$file.Length
407 }
408
409 #暂停或延迟
410 Read-Host "Press ENTER"
411 Start-Sleep 2
412 Start-Sleep -Milliseconds 300
413
414
415 #字符串 使用单引号表示原生字符串,不支持变量扩展或转义字符
416 $myString = 'Hello World'
417
418 #多行字符串
419 $myString = @"
420 This is the first line,
421 This is the second line.
422 "@
423
424 #多行注释
425 ##This is a regular comment
426 [email protected]"
427 function MyTest{
428 "aaaaaaaaaaaa"
429 }
430 "@
431 #变量$null告诉PowerShell不必为后续的使用而继续保留信息了
432
433 #转义字符 ` (不使用反斜杠)
434 PS C:\Users\vv> $myString = "Report for today `n---------"
435 $myString
436 Report for today
437 ---------
438
439 #字符串变量
440 PS C:\Users\vv> $header = "Report for today"
441 $myString = "$header `n$('-'*$header.Length)"
442 $myString
443
444 Report for today
445 ----------------
446
447 #格式化输出 右对齐8个字符,格式为4为数字,:C表示货币形式 -f String.Format()
448 PS C:\Users\vv> $formatString = "{0,8:D4} {1:C}`n"
449 $report = "Quantity Price`n"
450 $report += "--------------`n"
451 $report += $formatString -f 50,2.5677
452 $report += $formatString -f 3,7
453 $report
454 Quantity Price
455 --------------
456 0050 ¥2.57
457 0003 ¥7.00
458
459 #字符串方法
460 PS C:\Users\vv> "abc".IndexOf("b")
461 1
462
463 PS C:\Users\vv> "abc".Contains("b")
464 True
465
466 #$helpContent 得到的是一个对像,而不是字符串
467 $helpContent = Get-Help Get-ChildItem
468 $helpContent -match "location"
469 False
470
471 $helpContent.Name
472 Get-ChildItem
473
474 #得到字符串使用下面的方式
475 $helpContent = Get-Help Get-ChildItem | Out-String
476 $helpContent -match "location"
477 True
478
479 "Hello World".Replace("World","PowerShell")
480 Hello PowerShell
481
482 #replace 高级用法
483 "Hello World" -replace '(.*) (.*)','$2 $1'
484 World Hello
485
486 "Hello World".ToUpper()
487 HELLO WORLD
488 "Hello World".ToLower()
489 hello world
490
491 #首字符大写
492 $text = "hello"
493 $newText = $text.Substring(0,1).ToUpper()+$text.Substring(1)
494
495 "Hello World".Trim()
496
497 #从字符串尾部取出字符
498 "Hello World".TrimEnd('w','d',' ');
499
500 #格式化日期
501 $date = [DateTime]::now
502 $date.ToString("dd-MM-yyyy")
503
504 #日期比较
505 $dueDate = [DateTime] "01/01/2008"
506 if([DateTime]::Now -gt $dueDate)
507 {
508 "Account is now due"
509 }
510
511
512 #字符串合并用 append
513 Measure-Command{
514 $output = New-Object Text.StringBuilder
515 1..10000 |
516 Foreach-Object { $output.Append("Hello World") }
517 }
518 Days : 0
519 Hours : 0
520 Minutes : 0
521 Seconds : 1
522 Milliseconds : 696
523 Ticks : 16965372
524 TotalDays : 1.96358472222222E-05
525 TotalHours : 0.000471260333333333
526 TotalMinutes : 0.02827562
527 TotalSeconds : 1.6965372
528 TotalMilliseconds : 1696.5372
529
530 Measure-Command{
531 $output =""
532 1..10000 |
533 Foreach-Object { $output+="Hello World" }
534 }
535 Days : 0
536 Hours : 0
537 Minutes : 0
538 Seconds : 5
539 Milliseconds : 453
540 Ticks : 54531118
541 TotalDays : 6.31147199074074E-05
542 TotalHours : 0.00151475327777778
543 TotalMinutes : 0.0908851966666667
544 TotalSeconds : 5.4531118
545 TotalMilliseconds : 5453.1118
546
547
548 #数学计算
549 $result = [int](3/2)
550 $result
551 2
552
553 #截断
554 $result=3/2
555 [Math]::Truncate($result)
556 1
557
558 function trunc($number){
559 [Math]::Truncate($number)
560 }
561 $result=3/2
562 trunc $result
563 1
564
565 [Math]::Abs(-10.6)
566 [Math]::Pow(123,2)
567 [Math]::Sqrt(100)
568 [Math]::Sin([Math]::PI /2)
569 [Math]::ASin(1)
570
571 #立方根
572 function root($number,$root){ [Math]::Exp($([Math]::Log($number)/$root))}
573 root 64 3
574 4
575
576 #统计
577 1..10 | Measure-Object -Average -Sum
578
579 Count : 10
580 Average : 5.5
581 Sum : 55
582 Maximum :
583 Minimum :
584 Property :
585
586 Get-ChildItem > output.txt
587 Get-COntent output.txt | Measure-Object -Character -Word -Line
588
589 Lines Words Characters Property
590 ----- ----- ---------- --------
591 28 117 2638
592
593 #从文件列表中取得LastWriteTime的平均值
594 $times = dir | Foreach-Object { $_.LastWriteTime }
595 $results = $times | Measure-Object Ticks -Average
596 New-Object DateTime $results.Average
597
598 2009年12月11日 21:27:09
599
600
601 #16进制数
602 $hexNumber = 0x1234
603 $hexNumber
604 4660
605
606 #16进制 转 2进制
607 [Convert]::ToString(12341,2)
608 11000000110101
609
610 #2进制转10进制
611 [Convert]::ToInt32("11000000110101",2)
612 12341
613
614 #修改文件属性,并查询
615 $archive = [System.IO.FileAttributes] "Archive"
616 attrib +a test.txt
617 Get-ChildItem | Where { $_.Attributes -band $archive } | Select Name
618
619
620 #文件加密
621 (Get-Item output.txt).Encrypt()
622 #文件解密
623 (Get-Item output.txt).Decrypt()
624
625 #设置文件属性
626 (Get-Item output.txt).IsReadOnly
627 True
628 (Get-Item output.txt).IsReadOnly = $false
629 (Get-Item output.txt).IsReadOnly
630 False
631
632
633 #枚举文件可能的属性
634 [Enum]::GetNames([System.IO.FileAttributes])
635 ReadOnly
636 Hidden
637 System
638 Directory
639 Archive
640 Device
641 Normal
642 Temporary
643 SparseFile
644 ReparsePoint
645 Compressed
646 Offline
647 NotContentIndexed
648 Encrypted
649
650
651 [int] (Get-Item output.txt).Attributes
652 32
653
654 #文件属性的表示形式
655 $attributes = [Enum]::GetValues([System.IO.FileAttributes])
656 $attributes | Select-Object `
657 @{"Name"="Property";"Expression"={ $_ }},
658 @{"Name"="Integer";"Expression"={ [int]$_ }},
659 @{"Name"="Hexadecimal";"Expression"={ [Convert]::ToString([int] $_,16)}},
660 @{"Name"="Binary";"Expression"={ [Convert]::ToString([int] $_,2)}} |
661 Format-Table -auto
662
663 Property Integer Hexadecimal Binary
664 -------- ------- ----------- ------
665 ReadOnly 1 1 1
666 Hidden 2 2 10
667 System 4 4 100
668 Directory 16 10 10000
669 Archive 32 20 100000
670 Device 64 40 1000000
671 Normal 128 80 10000000
672 Temporary 256 100 100000000
673 SparseFile 512 200 1000000000
674 ReparsePoint 1024 400 10000000000
675 Compressed 2048 800 100000000000
676 Offline 4096 1000 1000000000000
677 NotContentIndexed 8192 2000 10000000000000
678 Encrypted 16384 4000 100000000000000
679
680
681 #判断文件属性
682 $encrypted=16384
683 $attributes = (Get-Item output.txt -force).Attributes
684 ($attributes -band $encrypted) -eq $encrypted
685 False
686
687
688 #读取文件内容
689 $content = Get-Content c:\file.txt
690 $content = ${c:\file.txt}
691 $content = [System.IO.File]::ReadAllText("c:\file.txt")
692
693 #搜索文件文本
694 Select-String -Simple "aaa" file.txt
695 Select-String "\(...\) ...-..." phone.txt
696
697 Get-ChildItem -Filter *.txt -Recurse | Select-String pattern
698
699
700 #获取被补丁修改的文件列表
701 cd $env:WINDIR
702 $parseExpression = "(.*): Destination:(.*) \((.*)\)"
703 $files = dir kb*.log -Exclude *uninst.log
704 $logContent = $files | Get-Content | Select-String $parseExpression
705 $logContent
706
707 #移动文件,删除文件
708 $filename = [System.IO.Path]::GetTempFileName()
709 $newname = [System.IO.Path]::ChangeExtension($filename,".cs")
710 Move-Item $filename $newname
711 Remove-Item $newname
712
713
714 #内容写入到文件
715 $filename = "output.txt"
716 $content = Get-Content $filename
717 $content = "hellohello"
718 $content | Set-Content $filename
719
720
721 #xml文件
722 $xml = [xml] (Get-Content powershell_blog.xml)
723 $xml.rss
724 ($xml.rss.channel.item).Count
725 ($xml.rss.channel.item)[0].title
726 $xml.rss.channel.item | Sort-Object title | Select-Object title
727
728 #XPath查询
729 #查询所有少于20个字符的标题
730 $xml = [xml] (Get-Content powershell_blog.xml)
731 $query = "/rss/chanel/item[string-length(title) < 20]/title"
732 $xml.SelectNodes($query)
733
734 #修改xml
735 $filename = (Get-Item phone.xml).FullName
736 Get-Content $fileName
737 $phoneBook = [xml](Get-Content $fileName)
738 $person = $phoneBook.AddressBook.Person[0]
739 $person.Phone[0]."#text" = "555-1214"
740 $person.Phone[0].type="mobile"
741 $newNumber = [xml]'<Phone type="home">555-1215</Phone>'
742 $newNode = $phoneBook.ImportNode($newNumber.Phone,$true)
743 [void] $person.AppendChild($newNode)
744 $phoneBook.save($filename)
745 Get-Content $filename
746
747
748
749 #Internet 脚本
750 #下载一个文件 (参数错误?)
751 $source = "http://img3.cn.msn.com/images/0809/logo1.png"
752 $destination = "c:\logo1.png"
753 $wc = New-Object System.Net.WebClient
754 $wc.DownloadFile($source,$destination)
755
756 #下载一个Web页面
757 $source = "http://blogs.msdn.com/powershell/rss.xml"
758 $wc = New-Object System.Net.WebClient
759 $content = $wc.DownloadString($source)
760
761 #输出格式为Html 创建一个PowerShell命令的概要
762 $filename = "c:\PowerShell.html"
763 $commands = Get-Command | Where { $_.CommandType -ne "Alias" }
764 $summary = $commands | Get-Help | Select Name,Synopsis
765 $summary | ConvertTo-Html | Set-Content $filename
766
767 #脚本块
768 function MultiplyInpuByTwo
769 {
770 process
771 {
772 $_ * 2
773 }
774 }
775
776 1,2,3 | MultiplyInpuByTwo
777 2
778 4
779 6
780
781 #从脚本块返回数据
782 function GetDate
783 {
784 Get-Date
785 }
786 $tomorrow = (GetDate).AddDays(1)
787
788
789
790
791
792 #数组
793 $myArray = 1,2,"aaa"
794 $myArray
795 1
796 2
797 aaa
798
799 #数组 基本操作
800 $collection = New-Object System.Collections.ArrayList
801 $collection.Add("Hello")
802 [void]$collection.Add("Hello")
803 [void]$collection.AddRange{("a","b")}
804 $collection.RemoveAt(1)
805
806 $myArray = New-Object string[] 10
807 $myArray[5]="bbb"
808
809
810 $myArray = Get-Process
811 $myArray
812
813 Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
814 ------- ------ ----- ----- ----- ------ -- -----------
815 851 38 69204 101888 338 137.36 5012 360SE
816 532 30 42192 42316 271 54.19 5864 360SE
817 965 19 17784 2192 132 3768 360tray
818 134 5 15516 12864 41 3612 audiodg
819 314 21 6796 5228 127 188 CCProxy
820 56 5 796 304 33 1232 CNAB4RPK
821 61 4 1532 1312 63 0.09 5436 conhost
822 ......
823
824
825 $myArray = @(Get-Process Explorer)
826 $myArray
827
828 Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
829 ------- ------ ----- ----- ----- ------ -- -----------
830 1085 42 52080 98140 300 164.77 2256 explorer
831
832
833
834 $a = @(
835 (1,2,3,4),
836 (5,6,7,8)
837 )
838 $a[0][1]
839 2
840
841 $myArray = 1,2,3
842 $myArray[1..3 + 0]
843 2
844 3
845 1
846
847 #访问数组中的每一个元素
848 $myArray = 1,2,3
849 $sum = 0
850 $myArray | Foreach-Object {$sum+=$_}
851 $sum
852 6
853
854 #访问数组中的每一个元素,更脚本化
855 $myArray = 1,2,3
856 $sum=0
857 foreach($element in $myArray){$sum+=$element}
858 $sum
859 6
860
861 #数组列表排序
862 Get-ChildItem | Sort-Object -Descending Length | Select Name, Length
863
864 #检查数组列表是否包含指定的项
865 "Hello","World" -contains "Hello"
866
867 #合并数组
868 $array = 1,2
869 $array += 3,4
870
871 #数组查询
872 $array = "Item1","Item2","Item3","Item4","Item15"
873 $array -eq "Item1" #Item1
874 $array -like "*2*" #Item2
875 $array -match "Item.." #Item15
876 $array -ne "Item1" #Item2 Item3 Item4 Item15
877 $array -notlike "*1*" #Item2 Item3 Item4
878 $array -notmatch "Item.." #Item1 Item2 Item3 Item4
879
880
881 #哈希表 ,哈希表不保存顺序,可用 Sort 排序
882 $myHashtable = @{}
883 $myHashtable = @{key1="value1";key2=1,2,3}
884 $myHashtable["NewItem"]=5
885 foreach($item in $myHashtable.GetEnumerator() | Sort Name)
886 {
887 $item.value
888 }
889
890
891 #参数
892 function Reverse
893 {
894 $srgsEnd = $args.Length - 1
895 $args[$srgsEnd..0]
896 }
897 Reverse 1,2,3,4
898
899
900 #用户交互
901 #读取用户输入一行
902 $directory = Read-Host "Enter a directory name:"
903 $directory
904
905 #读取用户输入的键
906 $key = [Console]::ReadKey($true)
907 $key
908
909 $key = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
910
911 #环境变量
912
913 #查看
914 $env:username
915
916 #完整方式
917 Get-Content Env:\Username
918
919
920 #查看所有变量
921 dir env:
922
923 Name Value
924 ---- -----
925 ALLUSERSPROFILE C:\ProgramData
926 ANT_HOME D:\J2EE\apache-ant-1.7.0
927 APPDATA C:\Users\vv\AppData\Roaming
928 CLASSPATH .\;D:\Design\J2EE\jdk1.6.0_10\lib\tools.jar
929 CommonProgramFiles C:\Program Files\Common Files
930 COMPUTERNAME VV-PC
931 ComSpec C:\Windows\system32\cmd.exe
932 FP_NO_HOST_CHECK NO
933 HOMEDRIVE C:
934 HOMEPATH \Users\vv
935 JAVA_HOME D:\Design\J2EE\jdk1.6.0_10
936 ......
937
938 #设置环境变量(永久)
939 $oldPersonalPath = ";d:\tools"
940 [Environment]::SetEnvironmentVariable("Path",$oldPersonalPath,"User")
941 [Environment]::GetEnvironmentVariable("Path","User") #;d:\tools
942
943
944 #阅读 rss
945 $sapi = New-Object -Com Sapi.SpVoice
946 $WebClient = New-Object System.Net.WebClient
947 $WebClient.Encoding=[System.Text.Encoding]::UTF8
948 $rss = [XML]($WebClient.DownloadString("http://weather.qq.com/zixun/rss_fyzx.xml"))
949 foreach($item in $rss.rss.channel.Item){
950 $title = $item.title
951 #$title = $item.title.InnerText
952 $content = $item.description
953 #$content = $item.description.InnerText
954 #$content = $item.description.InnerText.Replace(" ","")
955 $title
956 $sapi.Speak($title+"。")
957 $content
958 $sapi.Speak($content+"。。")
959 }
文章来源: https://www.cnblogs.com/P201521440001/p/10446428.html
如有侵权请联系:admin#unsafe.sh