PowerShell实用教程
列出唯一文件扩展的代码[*]PS C:\Users\Administrator> Get-childitem | group-object extension | select-object name
[*]Name
[*]----
[*].VirtualBox
[*].txt
[*].ps1
[*].pl
[*].RND
Get-ChildItem
我把结果输出到1.txt里面
[*]PS C:\Users\Administrator>Get-childitem >> 1.txt
[*] 目录: C:\Users\Administrator
[*]Mode LastWriteTime Length Name
[*]---- ------------- ------ ----
[*]d---- 2012/11/13 15:24 .VirtualBox
[*]d-r-- 2012/10/18 16:50 Contacts
[*]d-r-- 2012/11/13 16:07 Desktop
[*]d-r-- 2012/11/5 10:07 Documents
[*]d-r-- 2012/11/13 16:48 Downloads
[*]d-r-- 2012/10/18 16:53 Favorites
[*]d-r-- 2012/10/18 16:50 Links
[*]d-r-- 2012/10/18 16:50 Music
[*]d-r-- 2012/10/30 17:08 Pictures
[*]d-r-- 2012/10/18 16:50 Saved Games
[*]d-r-- 2012/10/18 16:50 Searches
[*]d---- 2012/10/30 13:33 SysinternalsSuite
[*]d-r-- 2012/10/18 16:50 Videos
[*]d---- 2012/11/12 16:03 VirtualBox VMs
[*]d-r-- 2012/3/23 11:37 「开始」菜单
[*]d---- 2012/10/18 16:27 桌面
[*]-a--- 2012/11/14 9:14 4438 1.txt
[*]-a--- 2012/11/6 14:36 177 gespse.ps1
[*]-a--- 2012/11/5 11:14 909 new2.pl
[*]-a--- 2012/11/5 11:13 392 new3.pl
[*]-a--- 2012/11/9 8:51 600 PUTTY.RND
[*]-a--- 2012/11/2 10:47 0 rocks.txt.txt
Get-ChildItem是一个内置的cmdlet,列出给定路径里的文件和文件夹。
Group-Object这个命令可以收集对象,并通过特性进行分类,
可以用Get-Help Group-Object查看详细解释,用Get-Help Group-Object -examples查看详细的例子。
Select-Object这个命令允许你调出你想保存的对象。
PowerShell的函数参数
PowerShell中最大的特点之一是函数的可扩展性强。
位置参数
PowerShell可以创建一个数值数组传递给函数的$args变量。传递给函数的每一个值从0开始被添加到这个数组中。例如:
[*]function foo
[*]{
[*] Write-Host $args $args
[*]}
[*]foo "This is parameter 1""This is parameter 2"
[*]PS C:\Users\Administrator> C:\Users\Administrator\ps.ps1
[*]This is parameter 1"This is parameter 2
名字参数
PowerShell输入的参数也可以命名,这就意味着它们可以通过名字传递,并且值被放置在相应的变量里。注意,当这个函数被调用的时候,参数颠倒,但是数值能正确返回。
[*]function foo
[*]{
[*]Param($param1,$param2)
[*]Write-Host $param1 $param2
[*] }
[*] foo -param2 "this is parameter 2" -param1 "this is parameter 1"
结果:
[*]PS C:\Users\Administrator> C:\Users\Administrator\ps.ps1
[*]this is parameter 1 this is parameter 2
splatting参数
在PowerShell的参数传递中,这个或许是最常用的方法。它包含创建一个数组或哈希表作为传递给函数的参数组。这个让你可以动态的创建整个脚本的参数,然后当你准备好后即可调用。
[*]function foo
[*] {
[*]Param($param1,$param2)
[*]Write-Host $param1 $param2
[*]}
[*]
[*]Create Hash Table
[*]$Blah=@{"Param1"="this is parameter 1";
[*]"Param2"="this is parameter 2"}
[*]
[*]#pass hasj table to function
[*]foo @Blsh
结果出错了
[*]PS C:\Users\Administrator> C:\Users\Administrator\ps.ps1
[*]无法将“Create”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后重试。
[*]所在位置 C:\Users\Administrator\ps.ps1:7 字符: 9
[*]+ Create
页:
[1]