对Windows XP Scripting,WSH与PowerShell的建议

Gre*_*ham 10 vbscript powershell scripting windows-xp wsh

在使用Bourne Shell,Perl,Python和Ruby等语言在Unix/Linux开源世界编写经验之后,我现在发现自己需要做一些Windows XP管理脚本.遗留环境似乎是Windows脚本宿主(WSH),它可以使用各种脚本语言,但主要语言是VBScript,并且基于COM对象.但是,未来似乎是Windows PowerShell,它基于.NET.

自从20世纪70年代Applesoft以来我没有做过Basic,所以我并不热衷于学习VBScript,尽管我学到了足够的知识来编写一个小脚本来安装网络驱动器.如果我要花时间真正学习这一点,我倾向于在.NET PowerShell环境中投入时间,如果真的是未来.几年前我做过一些C#Windows Forms编程,所以我对.NET有一些了解,这也使得PowerShell具有吸引力.

了解到没有人有一个水晶球可以预测微软的未来,我想听听任何PowerShell用户认为这是值得的,或者是否有人知道PowerShell的严重缺点,并建议我远离从中.

更新:我最终使用WSH/VBScript作为我在用户的Windows XP工作站上作为启动脚本安装的特定脚本.我所要做的就是将它复制到他们的Startup文件夹,然后我就完成了.但是,我只学到了足够的WSH才能完成这项工作.我很高兴看到PowerShell是未来,当我有更复杂的脚本任务时,我将转向PowerShell.

dan*_*die 16

它"值得"吗?

绝对.以下是原因的原因.

  1. 越来越多的Microsoft产品基于PowerShell - 例如Exchange Server 2007,SQL Server 2008等.
  2. PowerShell可以访问Microsoft .NET.
  3. 易于学习 - 您只需要很少的命令来探索PowerShell的功能 - 例如Get-Command,Get-Help,Get-Member等.
  4. 大多数命令都是别名和映射的,它们类似于DOS或*NIX shell命令 - 例如)"ls"和"dir"是"Get-ChildItem"的别名,"cd"代表"Set-Location"
  5. 它是一个很棒的开发人员工具 - 由于PowerShell可以访问.NET库,因此您可以在PowerShell中创建一些.NET功能的原型
  6. 您可以浏览注册表,证书,环境变量等,就像它们是文件系统一样 - 您使用在FileSystem中使用的相同命令来导航 - 例如)cd HKLM:\

缺点:

  1. PowerShell版本1.0不支持远程处理(2.0支持)和创建新线程(使用System.Threading.Thread,但将支持2.0中的后台作业)
  2. 如果您不习惯基于C#/ Java的语言,学习曲线可能会很长
  3. 创建通用.NET对象很困难
    • 例如,创建一个通用List<int>集合如下

$ l = new-Object System.Collections.Generic.List``1 [[System.Int32]]


Joe*_*oey 13

如果你倾向于向前看,那么Powershell肯定是要走的路,但它必须在7之前单独安装在Windows上,这可能会使WSH成为一个更有吸引力的目标,如果你只想部署没有进一步依赖的脚本.此外,.NET还不包括在像XP这样的古老Windows版本中,这进一步提高了标准.

如果您对.NET有所了解,那么您应该会发现Powershell非常直观.特别是在Windows Server环境中,它似乎很快成为命令行管理的默认设置,因为几乎所有新发布的服务器组件都附带自定义Powershell cmdlet.因此,Powershell似乎是他们想要关注一段时间的微软之路.哎呀,到目前为止他们甚至没有埋葬COM,所以我希望Powershell至少能活十年,因为他们把它定位为管理任务自动化和脚本环境.

我还找到了一个基于对象的管道,虽然我花了一段时间才习惯它,非常强大且易于使用.当然简化了许多需要*nixes上的sed/awk的东西.

话虽这么说,我仍然使用Windows批处理文件的许多东西,应该在Windows上运行,没有任何更多的依赖,但这只是我的一个肮脏的习惯:)