Powershell 操作指南 - 第一部分






2.50/5 (4投票s)
本文是一系列文章的一部分,旨在展示如何在 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 即将发布。新版本预计将涵盖远程处理问题。
历史
暂无