powershell实用宝典-bd02

上传人:xzh****18 文档编号:36574081 上传时间:2018-03-30 格式:DOC 页数:23 大小:2.13MB
返回 下载 相关 举报
powershell实用宝典-bd02_第1页
第1页 / 共23页
powershell实用宝典-bd02_第2页
第2页 / 共23页
powershell实用宝典-bd02_第3页
第3页 / 共23页
powershell实用宝典-bd02_第4页
第4页 / 共23页
powershell实用宝典-bd02_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《powershell实用宝典-bd02》由会员分享,可在线阅读,更多相关《powershell实用宝典-bd02(23页珍藏版)》请在金锄头文库上搜索。

1、第 2 章 充分利用 WindowsPowerShell初始化环境理解命令输入、解析和输出输出的写操作和格式化Windows PowerShell 为使用命令和脚本提供了一个高效的环境。正如第 1 章所述,可以在命令行中运行多种类型的命令,包括内置的 cmdlet、Windows 工具和带有命令行扩展的应用程序。无论它的来源是什么,每个命令都要遵循相同的语法规则。这些规则规定了一个命令由命令名称及其之后必要或可选的参数组成。参数包括参数本身、参数值和其他命令文本,可以利用管道来结合命令和重定向为输入、输出和错误指定来源。在 PowerShell 执行命令的同时,也启动了一系列事件,类似于执行下

2、列步骤。(1)被串接或组合并在一行中传递的多条命令被分解为独立的执行单元。一个执行单元的值被分解为一系列片段,称为令牌令牌。(2)每个令牌被解析,根据值分隔命令,并且根据某种对象类型(例如字符串或布尔值)来求值。在分析阶段,命令文本中的变量用它们相应的实际值来替换。(3)个别的命令被处理。如果一个命令的名称中包含一个路径,PowerShell 将使用这个路径去查找命令。如果没有在指定的位置找到这个命令,PowerShell 会返回一个错误。(4)如果命令名称中没有指定文件路径,PowerShell 会尝试在内部解析命令名称。每一个匹配表示引用了一个内置的命令(包含命令或函数的别名),该命令可以

3、被立即执行。如果没有匹配项,PowerShell 就在命令路径中查找匹配的可执行命令。如果在上述位置中都没有找到该命令,PowerShell 会返回一个错误。因为 PowerShell 默认不查找当前目录,必须明确地指定当前目录。(5)如果命令被定位,则使用任意指定的参数(包括使用那些指定的输入)执行命令。命令的输出和任何错误被写到 PowerShell 窗口或指定位置。可以看出,很多因素可以影响命令的执行,包括命令的路径设置、重定向技术和命令是否被串接或分组。在本章中,将描述并展示上述命令执行过程的实例,来帮助你充分利用PowerShell。在深入讨论之前,让我们看看启动 PowerShel

4、l 时的一些特别约定,并且介绍配置文件和控制台文件的概念。20Windows PowerShell 实用宝典2.1 初始化环境Windows PowerShell 提供一个动态的、可扩展的执行环境。有几种方法可以初始化 PowerShell 环境,包括传递启动参数到 Powershell.exe,使用自定义的配置文件,使用控 制台文件,或者这三者的任意组合。也可以用几种方法来扩展 PowerShell 的环境,包括通 过安装提供程序和注册管理单元(详情参见第 3 章)。2.1.1 传递启动参数如果曾经使用过 PowerShell,你可能是通过单击“开始”|“所有程序”|“附件” |Window

5、s PowerShell,然后选择 Windows PowerShell 来打开控制台窗口的。这样的启动方 式是以普通用户权限而不是管理员权限来启动 PowerShell 的,因此不能够执行许多管理任 务。为了以管理员权限启动 PowerShell,需要单击“开始”|“所有程序”|“附件” | Windows PowerShell,右击 Windows PowerShell 并选择“以管理员身份运行”。其他启动 PowerShell 控制台的方式有:使用“开始”菜单的“搜索”文本框;使用“运行” 对话框;在命令行窗口中输入 powershell。这些技术能够传递参数到 PowerShell,包

6、括用 于控制 PowerShell 工作方式的开关和执行额外命令的参数。例如,可以通过使用 powershell -nologo 在无 logo 模式(表示 logo 标志被关闭)下启动 PowerShell。默认情况下, 通过命令行窗口启动 PowerShell,PowerShell 运行,然后退出。如果希望 PowerShell 执行 一个命令并且不终止,在命令文本之后输入 powershell /noexit。代码清单 2.1 展示调用 PowerShell 控制台的基本语法。表 2.1 列举可用的启动参数。默认 情况下,PowerShell 控制台启动时启动配置文件被装载。要退出控制台

7、,输入 exit。代码清单 2.1 PowerShell 语法powershell.exe -PSConsoleFile FileName | -Version VersionNumber-NoLogo -NoExit -NoProfile -NonInteractive -Sta-InputFormat Text | XML -OutputFormat Text | XML-WindowsStyle Style -EncodedCommand Base64EncodedCommand-File ScriptFilePath -ExecutionPolicy PolicySetting-Com

8、mand CommandText表 2.1 PowerShell 启动参数参 数描 述-command指定命令文本来执行,就像在 PowerShell 命令提示符下输入一样-EncodedCommand指定 base64-encoded 命令文本来执行-ExecutionPolicy为控制台会话设置默认的执行策略第 2 章 充分利用 Windows PowerShell21续表参 数描 述-File设置要执行的脚本文件的名称-inputFormat设置发送到 PowerShell 的数据的格式,如文本字符串或序列化的 XML。默认的格式是 XML。有效值是 text 和 XML-NoExit运

9、行启动命令后不退出。通过命令行 shell(cmd.exe)运行 PowerShell 命令或脚本时,这个参数非常有用-NoLogo启动 PowerShell 控制台但不显示版权标志-Noninteractive在非交互模式下启动 PowerShell 控制台。在这个模式下,PowerShell 不为用户提供交互的提示-NoProfile告诉 PowerShell 控制台不装载当前用户配置文件-OutputFormat设置输出格式为文本字符串或序列化的 XML。默认格式是文本字符串。有效值是 text 和 XML-PSConsoleFile装载指定的 Windows PowerShell 控制

10、台文件。控制台文件以.psc1 为扩展名,用于确保指定的管理单元扩展被装载并且可供使用。可以在 Windows PowerShell 中使用 Export-Console 创建控制台文件-Sta以单线程启动 PowerShell-Version出于兼容的原因,设置使用的 Windows PowerShell 的版本,如 1.0-WindowStyle设置窗口风格,如 Normal(普通)、Minimized(最小化)、Maximized(最大化)或者 Hidden(隐藏)。默认值是 Normal2.1.2 调用 Windows PowerShell尽管最常使用 PowerShell 控制台或

11、PowerShell ISE,但有时候可能需要从 Windows 命令行 shell(cmd.exe)环境或者批处理脚本调用 PowerShell。要这么做,可以使用-Command 参数。 一般来说,还需要使用-NoLogo 参数以便不显示 Windows PowerShell 的 logo,并且使用- NoProfile 参数来停止配置文件的执行。例如,在一个命令提示符下或一个批处理文件中, 可以在 PowerShell 中用下列命令得到当前运行进程的列表:powershell nologo noprofile command get-process输入这一命令,Windows 命令行运行

12、 PowerShell,就像运行其他外部程序一样,传递参数 和参数值,在执行完毕后退出 PowerShell。要想使命令行在执行一个 PowerShell 命令后保 持 PowerShell 运行,可以增加-NoExit 参数,如下例所示:powershell noexit command get-process2.1.3 使用-Command 运行命令因为-Command 是从命令行提示符或批处理调用 PowerShell 最常用的一个参数,让我们仔22Windows PowerShell 实用宝典细看看它的所有使用方法。如果输入“-”作为命令,命令文本从标准输入读取。也可以 使用管道和重定

13、向技术来操作命令的输出。记住任何在命令之后输入的字符都被解释为命 令参数。因此,要写包含管道或重定向的命令,必须用双引号括住命令文本。下面的例子 用来获取当前运行进程的信息并按进程标示符排序:powershell nologo noprofile command “get-process | sort-object Id“实践提示 大部分命令生成的输出可以被重定向到另一个命令作为输入。这样的技术 称为管道管道,通过管道,某命令的输出被发送到下一命令作为输入。如下所示, 可以看到管道命令的一般语法:Command1 | Command2 这里管道重定向 Command1 的输出到 Command

14、2 的输入。也可以下例的 语法多次重定向输出:Command1 | Command2 | Command3 一般来说,如果一个 cmdlet 接受了来自另一个 cmdlet 的输入,这个 cmdlet 就具有一个-InputObject 参数,并且可以管道输出到这个 cmdlet。Windows PowerShell 也支持脚本块。一个脚本块是有序执行的一系列命令。脚本块用大括 号“”括住,并且在脚本块中的每个命令用分号间隔。输入脚本块时可以使用大括号, 但只有在 Windows PowerShell 中运行 Powershell.exe 时才能直接这样使用。结果是返回未 序列化的 XML 对

15、象而不是标准对象。例如,正在 PowerShell 提示符下工作,并且希望通 过一个分离的 PowerShell 实例运行一系列的命令,可以用大括号括住命令并且使用分号分 隔命令,如下所示:powershell command get-service; get-process尽管在 PowerShell 提示符下这一技术有效,但在命令提示符下运行 PowerShell 时,它将 不会工作。在此情况下,使用如下格式:“ get-process,但可以在 命令提示符下输入执行下列命令:powershell command “ get-process“这里,以字符串形式传递了一个代码块到 Power

16、Shell 以解析并执行。PowerShell 执行 Get- Service 并显示结果,然后执行 Get-Process 并显示结果。如果无论使用字符串还是多个命 令,无论在命令提示符还是在 PowerShell 提示符下都能成功使用某语法,那么该语法就是 应该使用的语法。第 2 章 充分利用 Windows PowerShell232.1.4 使用-File 运行脚本使用 Windows 命令行且运行 PowerShell 脚本时,可以使用管道和重定向技术来操作命令 输出。不同于使用-Command 参数,-File 参数用来指定要运行的脚本。如下例所示,使用 -File 参数并指定要运行的脚本的路径:powershell nologo noprofile file c:scriptsrun_all.ps1如果脚本在当前目录中,可以只输入脚本名称,如下所示:powershell nologo noprofile file run_

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号