简介:PowerShell 2.0 CTP版的新特性
译者: Edengundam随着你开始使用Windows PowerShell 2.0的CTP版本,最好尽快告诉您CTP版本中究竟有哪些新的功能。第一件要知道的事情就是此版本兼容并替换Windows PowerShell 1 ...
关键字: PowerShell 微软 Windows Server shell 脚本
PowerShell 2.0 CTP版的新特性
译者: Edengundam
随着你开始使用Windows PowerShell 2.0的CTP版本,最好尽快告诉您CTP版本中究竟有哪些新的功能。
第一件要知道的事情就是此版本兼容并替换Windows PowerShell 1.0。要安装CTP版本,你必须先卸载PowerShell 1.0。
卸载Windows PowerShell 1.0
Windows XP-SP2和Windows Server 2003:在添加/移除程序中,选择显示更新。删除适用于您系统的PowerShell更新: KB926139 (en-us),KB926140 (localized), KB926141 (MUI pack)
Windows Vista:控制面板->程序和功能->安装更新。卸载PowerShell更新: KB928439
Windows Server 2008:从Windows Server 2008的Beta3起,PowerShell 1.0作为内置可选组建。如果你激活了PowerShell 1.0,在你安装PowerShell V2 CTP之前必须关闭此特性。启动Server Manager选择删除Features的选项。从列表中选择PowerShell,禁用此特性。
相对Windows PowerShell 1.0的重大变化
·
位于HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine的PowerShellEngine键值变更为2.0
·
新添加了Data和Cmdlet语言关键字. 这意味着,“data”和“cmdlet”都会被解释为语言的关键字,这可能导致分析错误。
·
改变了参数分隔符的行为。在PowerShell 1.0中,$a.method(,1)被当成以1个元素数组作为参数,条用方法。然而$a.method(1,2)作为分析错误。在PowerShell 2.0中,这两种语法都被当作分析错误。
·
新添加了Cmdlet和变量(后面列出)。这些可能和已经存在的脚本产生冲突。
1.PowerShell远程控制
Windows PowerShell 2.0提供了远程执行Cmdlet和脚本的支持。PowerShell 远程控制允许从单一客户端来管理多个远程计算机。要使用PowerShell 2.0远程管理计算机,需要在每台参与操作的计算机上安装PowerShell 2.0;包括客户端计算机和被管理的计算机。
更多信息:
·
get-help About_Remoting
·
get-help Invoke-Expression
Enable Remoting: PowerShell远程控制特性依赖Windows Remote Management(WS-Man)技术,为了能够远程操作,请确保安装了WS-Man Winrm服务并启动了此服务。要验证Winrm服务是否正在运行,照下面的方法去做:
PS> get-service winrm
Setup places a PowerShell script (Configure-Wsman.ps1) in $pshome folder that configures WS-Man settings. 要为PowerShell远程控制特性配置WS-Man服务,请运行位于PowerShell目录中的configure-WSMan.ps1脚本(Windows Server 2008或者Windows Vista SP1下,使用权限提升来运行). 此脚本不会启动或停止WinRM服务。
& $pshome\Configure-Wsman.ps1
已知问题:
·
要使用远程的Cmdlet和特性,PowerShell必须以administrator/elevated执行。
·
PowerShell 2.0远程特性不能在Windows Vista RTM版上正常工作。你需要安装Windows Vista Service Pack 1 (SP1)测试版,才能使用PowerShell远程特性。
2.后台作业
Windows PowerShell 2.0引入了后台作业(PsJob) 的概念。一个后台作业不与控制台进行任何交互,异步地(在后台)运行一个命令或者表达式。命令提示符将会立即返回,您可以在方便时查看作业的执行结果。您可以在本地或远程计算机上运行后台作业。
更多信息:
·
get-help About_PSJob
3.ScriptCmdlets
ScriptCmdlets允许您使用PowerShell脚本来编写cmdlet,而不需要使用编译的C#和VB.NET代码。
已知问题:
此版本中,不支持下面的cmdlet参数:
·
Parameter sets
·
Help
更多信息:
·
get-help about_scriptcmdletparameters
·
get-help about_scriptcmdletmethods
·
get-help about_scriptcmdletattributes
4.可步进式管道线
此特性使您可以将脚本块转化为一个可步进式管道线,接下来通过在管道线上独立调用Begin()、Process()和End()来步进式的控制活动的执行序列。
5.数据语言
数据语言是PowerShell语言的一个子集,它允许更好的进行脚本的共享。它还允许将数据从你脚本的代码中分离出来。
更多信息:
·
get-help about_data_section
·
get-help ConvertFrom-StringData
6.脚本国际化
此新特性允许PowerShell脚本作者编写能够被翻译为Windows支持的各种语言的脚本。
你可以将字符串资源从其他代码分离出来,使用新的数据语言特性(如上)。使用最新的Import-LocalizedData cmdlet,你可以指示PowerShell检查操作系统的UI区域设置,并在适当的区域设置目录中(例如en-US或者de-DE)检查转换数据文件(translated data file,以.psd1结尾),并使用转换字符串替换原始字符串。
更多信息:
·
get-help about_script_internationalization
·
get-help Import-LocalizedData
·
get-help ConvertFrom-StringData
·
get-help about_data_section
7.脚本调试
添加了新的调试特性:你现在可以在行、列、函数、变量和命令上设置断点。你还可以指定,当触发断点时的行为。还支持进入、跳过或者退出函数调用。你还可以简单的显示调用栈
更多信息:
·
get-help about_debugger
8.新的运算符:
·
Splatting运算符(@):PowerShell V2支持splatting运算符(@)同时传递一个集合的参数
·
-Split:-split运算符允许用户根据用户指定的分隔符,将字符串分为一个数组的字串。
·
–Join:-join运算符对字符串数组中多个字符串,使用用户指定分隔符将它们连接成为一个单独的字符串。
9.新的变量:
·
$commandLineParameters:保存命令行和管道中的参数。Cmdlets可以通过MyInvocation.CommandLineParameters访问。
·
$PSVersionTable: 通过此变量查看PowerShell版本信息
·
$Culture: 通过此变量查看当前的区域设置信息
·
$UICulture: 通过此变量查看当前UI的区域设置信息
10.新的Cmdlet:
如下24 cmdlet是新添加到PowerShell 2.0中的。查看帮助来了解如何使用这些Cmdlet的细节.
Get-PSBreakpoint
Get-PSCallStack
Remove-PSJob
New-PSBreakpoint
ConvertFrom-StringData
Start-PSJob
Disable-PSBreakpoint
Import-LocalizedData
Stop-PSJob
Enable-PSBreakpoint
Get-Runspace
Wait-PSJob
Remove-PSBreakpoint
New-Runspace
Invoke-WMIMethod
Step-Into
Remove-Runspace
Remove-WMIObject
Step-Out
Get-PsJob
Set-WMIInstance
Step-Over
Receive-PSJob
Out-GridView
11.受限运行空间(Constrained Runspaces):
受限运行空间允许创建具有约束集合的PowerShell运行空间。在使用受限运行空间时,这些约束包括:限制命令、脚本和语言元素访问和执行的限制能力。
随着你开始使用Windows PowerShell 2.0的CTP版本,最好尽快告诉您CTP版本中究竟有哪些新的功能。
第一件要知道的事情就是此版本兼容并替换Windows PowerShell 1.0。要安装CTP版本,你必须先卸载PowerShell 1.0。
卸载Windows PowerShell 1.0
Windows XP-SP2和Windows Server 2003:在添加/移除程序中,选择显示更新。删除适用于您系统的PowerShell更新: KB926139 (en-us),KB926140 (localized), KB926141 (MUI pack)
Windows Vista:控制面板->程序和功能->安装更新。卸载PowerShell更新: KB928439
Windows Server 2008:从Windows Server 2008的Beta3起,PowerShell 1.0作为内置可选组建。如果你激活了PowerShell 1.0,在你安装PowerShell V2 CTP之前必须关闭此特性。启动Server Manager选择删除Features的选项。从列表中选择PowerShell,禁用此特性。
相对Windows PowerShell 1.0的重大变化
·
位于HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine的PowerShellEngine键值变更为2.0
·
新添加了Data和Cmdlet语言关键字. 这意味着,“data”和“cmdlet”都会被解释为语言的关键字,这可能导致分析错误。
·
改变了参数分隔符的行为。在PowerShell 1.0中,$a.method(,1)被当成以1个元素数组作为参数,条用方法。然而$a.method(1,2)作为分析错误。在PowerShell 2.0中,这两种语法都被当作分析错误。
·
新添加了Cmdlet和变量(后面列出)。这些可能和已经存在的脚本产生冲突。
1.PowerShell远程控制
Windows PowerShell 2.0提供了远程执行Cmdlet和脚本的支持。PowerShell 远程控制允许从单一客户端来管理多个远程计算机。要使用PowerShell 2.0远程管理计算机,需要在每台参与操作的计算机上安装PowerShell 2.0;包括客户端计算机和被管理的计算机。
更多信息:
·
get-help About_Remoting
·
get-help Invoke-Expression
Enable Remoting: PowerShell远程控制特性依赖Windows Remote Management(WS-Man)技术,为了能够远程操作,请确保安装了WS-Man Winrm服务并启动了此服务。要验证Winrm服务是否正在运行,照下面的方法去做:
PS> get-service winrm
Setup places a PowerShell script (Configure-Wsman.ps1) in $pshome folder that configures WS-Man settings. 要为PowerShell远程控制特性配置WS-Man服务,请运行位于PowerShell目录中的configure-WSMan.ps1脚本(Windows Server 2008或者Windows Vista SP1下,使用权限提升来运行). 此脚本不会启动或停止WinRM服务。
& $pshome\Configure-Wsman.ps1
已知问题:
·
要使用远程的Cmdlet和特性,PowerShell必须以administrator/elevated执行。
·
PowerShell 2.0远程特性不能在Windows Vista RTM版上正常工作。你需要安装Windows Vista Service Pack 1 (SP1)测试版,才能使用PowerShell远程特性。
2.后台作业
Windows PowerShell 2.0引入了后台作业(PsJob) 的概念。一个后台作业不与控制台进行任何交互,异步地(在后台)运行一个命令或者表达式。命令提示符将会立即返回,您可以在方便时查看作业的执行结果。您可以在本地或远程计算机上运行后台作业。
更多信息:
·
get-help About_PSJob
3.ScriptCmdlets
ScriptCmdlets允许您使用PowerShell脚本来编写cmdlet,而不需要使用编译的C#和VB.NET代码。
已知问题:
此版本中,不支持下面的cmdlet参数:
·
Parameter sets
·
Help
更多信息:
·
get-help about_scriptcmdletparameters
·
get-help about_scriptcmdletmethods
·
get-help about_scriptcmdletattributes
4.可步进式管道线
此特性使您可以将脚本块转化为一个可步进式管道线,接下来通过在管道线上独立调用Begin()、Process()和End()来步进式的控制活动的执行序列。
5.数据语言
数据语言是PowerShell语言的一个子集,它允许更好的进行脚本的共享。它还允许将数据从你脚本的代码中分离出来。
更多信息:
·
get-help about_data_section
·
get-help ConvertFrom-StringData
6.脚本国际化
此新特性允许PowerShell脚本作者编写能够被翻译为Windows支持的各种语言的脚本。
你可以将字符串资源从其他代码分离出来,使用新的数据语言特性(如上)。使用最新的Import-LocalizedData cmdlet,你可以指示PowerShell检查操作系统的UI区域设置,并在适当的区域设置目录中(例如en-US或者de-DE)检查转换数据文件(translated data file,以.psd1结尾),并使用转换字符串替换原始字符串。
更多信息:
·
get-help about_script_internationalization
·
get-help Import-LocalizedData
·
get-help ConvertFrom-StringData
·
get-help about_data_section
7.脚本调试
添加了新的调试特性:你现在可以在行、列、函数、变量和命令上设置断点。你还可以指定,当触发断点时的行为。还支持进入、跳过或者退出函数调用。你还可以简单的显示调用栈
更多信息:
·
get-help about_debugger
8.新的运算符:
·
Splatting运算符(@):PowerShell V2支持splatting运算符(@)同时传递一个集合的参数
·
-Split:-split运算符允许用户根据用户指定的分隔符,将字符串分为一个数组的字串。
·
–Join:-join运算符对字符串数组中多个字符串,使用用户指定分隔符将它们连接成为一个单独的字符串。
9.新的变量:
·
$commandLineParameters:保存命令行和管道中的参数。Cmdlets可以通过MyInvocation.CommandLineParameters访问。
·
$PSVersionTable: 通过此变量查看PowerShell版本信息
·
$Culture: 通过此变量查看当前的区域设置信息
·
$UICulture: 通过此变量查看当前UI的区域设置信息
10.新的Cmdlet:
如下24 cmdlet是新添加到PowerShell 2.0中的。查看帮助来了解如何使用这些Cmdlet的细节.
Get-PSBreakpoint
Get-PSCallStack
Remove-PSJob
New-PSBreakpoint
ConvertFrom-StringData
Start-PSJob
Disable-PSBreakpoint
Import-LocalizedData
Stop-PSJob
Enable-PSBreakpoint
Get-Runspace
Wait-PSJob
Remove-PSBreakpoint
New-Runspace
Invoke-WMIMethod
Step-Into
Remove-Runspace
Remove-WMIObject
Step-Out
Get-PsJob
Set-WMIInstance
Step-Over
Receive-PSJob
Out-GridView
11.受限运行空间(Constrained Runspaces):
受限运行空间允许创建具有约束集合的PowerShell运行空间。在使用受限运行空间时,这些约束包括:限制命令、脚本和语言元素访问和执行的限制能力。

