65.9K
CodeProject 正在变化。 阅读更多。
Home

Powershell 操作指南 - 第一部分

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.50/5 (4投票s)

2008年12月15日

CPOL

3分钟阅读

viewsIcon

23033

本文是一系列文章的一部分,旨在展示如何在 powershell 中执行各种任务。

   

引言

我对 SQL server 2008 中 powershell 的功能感到很兴奋。最初,我不太清楚它是什么,但我仍然热衷于学习新东西。我设想 powershell 会涉及一些命令行操作。之后会发生什么对我来说完全是个谜。总之,我设法花了一些额外的时间来学习 powershell 技术。我将把这篇文章分成多个系列。在第一部分中,我将介绍如何处理变量和各种有用的命令let。本文中的示例假定已安装 SQL server 2008 和 windows powershell 1.0。

背景


Powershell 是一个扩展的 shell,允许我们操作对象并执行各种脚本任务。它利用了 .NET 的优势。我们经常会在 powershell 中遇到 CmdLet。Commandlet 是一个 .NET 对象,它暴露了供我们使用的功能。例如,有一个名为“New-Variable”的 cmdlet,可用于声明变量。

使用代码

要开始运行 powershell,请在命令提示符下键入“sqlps”。如果您不知道有哪些 cmdlet 可用,只需键入“get-alias”。这个方便的小型 cmdlet 可以显示可用 cmdlet 的简写。这将帮助您入门,以便您可以开始探索 cmdlet。还有一个名为“get-command”的 cmdlet,可列出所有可用的 cmdlet。

		
PS SQLSERVER:\> get-alias

CommandType     Name            Definition
-----------     ----            ----------
Alias           ac              Add-Content
Alias           asnp            Add-PSSnapin
Alias           clc             Clear-Content 
		

当我开始使用 powershell 时,我很难找到有关 cmdlet 的文档。我在网上和书中查找,但当时并没有太多信息。只有一些与 cmd-lets 相关的参考。总之,不必绝望。有一个名为“Get-Help”的 cmdlet,可以帮助您从命令行获取与 cmdlet 相关的文档。您需要将 cmdlet 的名称作为参数提供。大多数 cmdlet 提供的其他有用参数包括“-detailed”和“-full”。这些标志允许您获取有关参数的附加信息。“-full”标志是最全面的。此外,如果您键入“Get-Help *”,您就可以看到所有可用帮助主题的列表。Powershell 的文档让我想起了 Unix 计算机上的 manpages 和 RTM 的口号。

字符串、变量、对象

声明和使用变量非常简单。可以通过“New-Variable”和“Set-Variable”等 cmdlet 来实现。此外,我们可以像在 perl、php 等脚本语言中那样声明它。

PS SQLSERVER:\> $rnd = New-Object "Random"
PS SQLSERVER:\> $rnd.Next()
778277127
PS SQLSERVER:\> $str = "Me"
PS SQLSERVER:\> $i = 1


在上面的输出中,我们使用 .NET 框架中的 Random 类声明了一个名为 $rnd 的变量。下一行调用了 Next() 方法来生成随机数。New-Object cmdlet 可以帮助我们实例化任何 .NET 框架类。但是,请记住,我们只能访问 .NET 框架类的一个子集。我们可以引用 SMO 可以引用的任何类。这是我发现的唯一限制。除了构建引用类型变量外,我们还可以创建原始类型,如字符串和整数。上面的示例 $str$i 分别完成了这项工作。

我怎么知道哪个变量是什么类型?这是一个合理的问题,因为没有类型声明的强制执行。我们只需在变量上调用 GetType() 方法即可。请参阅下面的输出。

PS SQLSERVER:\> $i.GetType()

IsPublic IsSerial Name            BaseType
-------- -------- ----            --------
True     True     Int32           System.ValueType



powershell 中有一些特殊变量。以下是它们的列表及其作用:

1. $_ - 包含管道中的当前对象,在脚本块、过滤器和 where 语句中使用。
2. $Args - 包含从命令行传递到函数的参数数组。
3. $Error - 包含错误信息的对象。
4. $Home - 用户的家目录。
5. $PsHome - Windows PowerShell 安装目录。


关注点

几个月前,我在 SQL Server 用户组中介绍了本文的材料。我从一位微软员工那里得知 powershell 2.0 即将发布。新版本预计将涵盖远程处理问题。

历史

暂无

© . All rights reserved.