PowerShell 技能连载 - 创建硬连接

硬连接是NTFS文件系统中文件的“镜像”。它们使得一个文件能在多个文件系统位置(必须在一个卷中)中出现。

所以文件仅仅占用它的原始位置空间,但是在其它地方也可用。当您需要让大文件在多个地方可用的时候,这是一个十分有用的功能。

以下是 New-HardLink 函数的介绍。它演示了PowerShell如何调用底层的API函数:

查看更多

评论

用 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 文本处理实例(三)

评论

获取2013年剩余天数

用PowerShell获取2013年剩余天数的两种写法。

((Get-Date 2014-1-1) - (Get-Date)).Days
100

([datetime]"2014-1-1" - [datetime]::now).Days
100

顺便励志一下,2013年只剩下100天了。Come on,小伙伴们!

评论

在PowerShell中操作Excel - 读取数据

欢迎回到“在PowerShell中操作Excel”三部曲系列文章。在这一系列的前两部分,我们学习了如何将数据写入Excel并且创建“富”报表,以及额外的格式化选项等Microsoft Excel高级用法。

对于IT专家来说,这个故事的另一半是如何从一个Excel文档中读取数据。它的挑战性在于您必须事先知道工作表的结构。我们可以搜索数据,但那是更复杂的情况。我假设您已有一个用过且了其解结构的Excel文档。这样,用PowerShell读取数据就不那么复杂。

查看更多

评论

PowerShell 技能连载 - 在文件管理器中显示隐藏文件

PowerShell可以方便地读写注册表。注册表是Windows设置的中心仓库。

这是一个可以设置文件管理器显示/不显示隐藏文件的函数。它聪明的地方在于不需要向注册表写入新值。它相当于文件管理器窗口如何显示和改变它们的内容。

function Show-HiddenFile
{
    param([Switch]$Off)

    $value = -not $Off.IsPresent
    Set-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced `
    -Name Hidden -Value $value -type DWORD

    $shell = New-Object -ComObject Shell.Application
    $shell.Windows() |
        Where-Object { $_.document.url -eq $null } |
        ForEach-Object { $_.Refresh() }
} 

Show-HiddenFile 使得隐藏文件变得可见;而 Show-HiddenFile -Off 使得隐藏文件不可见。操作结果几乎在所有文件管理窗口中立即生效。如果您在没有打开文件管理窗口的情况下做出改变,则改变不会立即生效,因为没有可以调用 Refresh() 方法的窗口。

查看更多

评论

PowerShell 技能连载 - PowerShell函数的详细输出

若要为您的PowerShell函数增加指定的详细输出信息(verbose output),请增加 CmdletBinding 属性到您的函数,使它支持公共参数。
(译者注:公共参数例如 -Verbose-Debug 等)

function test
{
    [CmdletBinding()]
    param()
} 

下一步,添加 Write-Verbose 来输出文本信息。它们仅当用户指定了 -Verbose 参数时才有效:

function test
{
    [CmdletBinding()]
    param()

    Write-Verbose "Starting"
    "Doing Something"
    Write-Verbose "Shutting Down"
} 

所以当您按以下方式运行它时,您会见到正常的输出信息:

PS > test

Doing Something

然而,如果您增加了 -Verbose 参数,您将会看到您输出的详细信息:

PS > test -Verbose

Starting
Doing Something
Shutting Down

查看更多

评论

在PowerShell中操作Excel - 创建一个简单的报表

除了文本文件之外,Windows系统管理员最常用的工具是Microsoft Excel。我观察论坛中人们的讨论发现,有一大堆关于Excel电子表格讨论。许多人想要读写Excel的方法。通常,我告诉人们如果他们使用PowerShell,那么可以简单地将结果导出到CSV文件,然后用Excel打开,但是您很有可能需要一个真正的Excel文件。

我着手准备写几个关于如何在PowerShell中操作Excel的专题。今天我们将要通过Microsoft Excel和Windows PowerShell创建一个简单的报表。在第二部分中,我将演示如何创建一个更复杂的Excel文档。然后在第三部分中,我将向您演示如何从Excel文件中读取数据。

查看更多

评论

在PowerShell中操作Excel - 创建一个富Excel文档

让我们继续《在PowerShell中操作Excel》系列文章。上一次我们掩饰了如何用Microsoft Excel和Windows PowerShell来创建一个基本的报表。从某些方面来讲,我们上次创建的东西和创建CSV并在Excel中打开差不了多少。所以,如果您希望用Excel,让我们彻彻底底地使用它!在今天的文章中,我将沿用上次的演示脚本,但是创建一个更“富(richer)”的Excel文档。下一步,在第三部分中,我将为您演示如何从Excel文件中读取数据。

查看更多

评论

PowerShell 技能连载 - 将结果复制到剪贴板

要将 CmdLet 的输出结果复制到别的应用程序,只需要简单地将它们通过管道传输到 clip.exe。然后,将结果粘贴到您所要的应用程序即可:

Get-Service | clip

查看更多

评论

理解PowerShell的类型转换魔法

毫无疑问地,PowerShell中的类型转换是它最有用的“魔法”功能之一。如果您执行一个需要特定参数类型(例如:DateTimeTimeSpan)的命令,情况似乎“一切正常”。

例如,Twitter上的这条问题:

PowerShell 的 TimeSpan 参数将10理解为10个计时周期,10:00理解为10小时,”10”理解为10天。

译者注:计时周期的概念请参见 TimeSpan.Ticks 属性

但是,这是怎么做到的呢?

以下是PowerShell根据您的需要将输入值转换为所需要的类型的步骤——例如 TimeSpan。和许多事情一样,并不是什么魔法——只是一堆繁琐的工作。

查看更多

评论