用 PowerShell 处理纯文本 - 1

原始文本:”data1”:111,”data2”:22,”data3”:3,”data4”:4444444,”data5”:589
要求:转换成对象

方法一,采用字符串运算及 ConvertFrom-StringData 命令:

$rawTxt='"data1":111,"data2":22,"data3":3,"data4":4444444'
$rawTxt -split ',' | ForEach-Object {
   $temp= $_ -split ':'
   "{0}={1}" -f $temp[0].Substring(1,$temp[0].Length-2),$temp[1]
} | ConvertFrom-StringData

方法二,采用正则表达式,使用.NET的方法:

$rawTxt = '"data1":111,"data2":22,"data3":3,"data4":4444444,"data5":589'
$regex = [regex] '"(?<name>\w*)":(?<value>\d*),?'
$match = $regex.Match($rawTxt)
while ($match.Success) {
	[PSCustomObject]@{
	    Name = $match.Groups['name'].Value
	    Value = $match.Groups['value'].Value
	}
	$match = $match.NextMatch()
}

方法三,采用正则表达式,使用 Select-String Cmdlet:

Select-String -InputObject $rawTxt -Pattern $regex -AllMatches | % {
    $_.Matches
} | % {
   [PSCustomObject]@{
        Name = $_.Groups['name'].Value
        Value = $_.Groups['value'].Value
    }
}

三者的执行结果都是这样:

Name          Value
----          -----
data1         111
data2         22
data3         3
data4         4444444
data5         589

原命题参见:[PowerShell 文本处理实例(三)] 1

用脚本批量下载www.cheat-sheets.org中的所有pdf文件

流水不腐,户枢不蠹。虽然批量下载有很多工具能做到,但是为了提高,我们尽量动手编写脚本吧。
http://www.cheat-sheets.org 里有很多好东西,我们把它批量下载下来。

下载的PDF截图

PowerShell代码:

Add-Type -AssemblyName System.Web
$baseUrl = 'http://www.cheat-sheets.org'
$result = Invoke-WebRequest $baseUrl
$result.Links |
    ? {$_.href -Like '*.pdf'} |
    select -ExpandProperty href |
    sort |
    % {
        if ($_ -like '/*')
        {
            $baseUrl + $_
        } else {
            $_
        }
      } |
     % {
        echo "Downloading $_"
        $fileName = $_.Substring($_.LastIndexOf("/") + 1)
        $localFileName = [System.Web.HttpUtility]::UrlDecode($fileName)

        if (Test-Path $localFileName) {
            return
        }
        Invoke-WebRequest -Uri $_ -OutFile $localFileName
        if (Test-Path $localFileName) {
            Unblock-File $localFileName
        }
     }

新手从 0 开始学习 PowerShell 的路线

以下是我个人的PowerShell学习路线,也许可以节省您一些走弯路的时间,供参考。

入门材料

  • 微软虚拟学院 快速入门: PowerShell 3.0 - 有讲座视频、中文字幕、pdf 讲义,轻松起步。我把它们都传到百度云上了,下载地址请参见 PowerShell 微软虚拟学院课程
  • Windows Powershell入门指南(中文)-微软资料.pdf - 篇幅很短,仅 29 页,入门找感觉,一天即可读完。
  • pstips.chm - 中文电子书,篇幅适中,涵盖了语法要点,重点推荐!

速查表

推荐打印出来放案头备用。

  • Windows PowerShell 语言快速参考.rtf - 只有三页纸的速查表(中文)
  • powershell_reference_Apr2010.doc - 只有两页纸的速查表(英文)

中文手册,用于查阅

  • WindowsPowerShellHelp_官方手册.chm - 微软官方,浏览一下有哪些内容,日后备用。

官方网站

Microsoft PowerShell

英文电子书

  • [Windows.PowerShell.Pocket.Reference(2nd,2012.12)].Lee.Holmes.文字版.pdf - 系统学习用,可以一周读完,后几章可跳过,100 来页。
  • [Windows.Powershell.实战(第2版)].(Windows.Powershell.in.Action).Bruce.Payette.文字版.pdf - 经典,深入学习用,900 来页,可以用来当工具书查阅。

邮件列表

  • Power Tips - 右侧有个 Tips via Email,在这儿通过电子邮件订阅,每天会发给你一封短小的邮件。一点一滴学习,内容都很精致。

电子书合集

所有 PowerShell 电子书的合集,自动更新:《PowerShell 电子书合集

个人博客

补充说明

PowerShell 技术 QQ 群