bobpxp 发表于 2018-9-3 08:32:12

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]
查看完整版本: PowerShell实用教程