对Windows XP Scripting,WSH与PowerShell的建议

时间:2009-04-06 19:49:56

标签: powershell scripting vbscript windows-xp wsh

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

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

了解没有人有一个水晶球来预测微软的未来,我想听听任何PowerShell用户认为值得,或者有人知道PowerShell的严重缺点,并建议我远离它。

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

6 个答案:

答案 0 :(得分: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-位置“
  5. 这是一个很棒的开发人员工具 - 由于PowerShell可以访问.NET库,因此您可以在PowerShell中构建一些.NET功能原型
  6. 您可以浏览注册表,证书,环境变量等,就好像它们是文件系统一样 - 您使用在FileSystem中使用的相同命令来导航 - 例如)cd HKLM:\
  7. <强>缺点:

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

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

答案 1 :(得分:13)

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

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

此外,我发现了一个基于对象的管道,虽然我花了一段时间才习惯它,但最终功能非常强大且易于使用。当然简化了许多需要* nixes上的sed / awk的东西。

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

答案 2 :(得分:3)

WSH的主要优点是它自Windows 98以来默认安装,甚至可能是Windows 95,但是现在PowerShell随附Server 2008,并且可以安装在XP之后的任何东西上,它变得不那么重要了。

如果您完全控制运行脚本的服务器,我建议您使用PowerShell。

答案 3 :(得分:2)

我一直在为Windows寻找最好的脚本语言(现在仍然如此)。然而,在看到所有变体后,我最终使用JScript for WSH。虽然Powershell显然具有优势,但第一篇文章的优势似乎并不重要(内置IDE除外)。然而,缺点并未完全列出:

  1. 在运行脚本之前,您必须手动启用 运行它们的可能性,这使得在分布式上进行部署 网络比WSH困难得多。
  2. cmdlet的命名约定。它不是camelCase,也不是python_tail。它真的烧了我的眼睛。
  3. 变量名以$开头(Perl-style我认为?完全不知道) - 同样在这里。
  4. 您不能使用realative路径来运行脚本。
  5. 相反,JScript更像C,不需要显式启用脚本运行,接受相对路径,区分大小写和松散类型(与VBScript相比,两者都是脚本语言的恕我直言的优点)。 我在PowerShell中没有太多的知识,就像我在MS Technet和网络上发现的那样。

    因此,对我而言,我拒绝PowerShell的两个主要原因(即使知道它可能更强大并且MS主动支持它)是:1)你必须在每台机器上手动启用脚本运行的可能性2)一般非C类我曾经认为(而不仅仅是我,我猜)。

答案 4 :(得分:1)

如果可能,请使用Posershell和内联C#,否则 - WSH,不是吗? - msdos-batch。

答案 5 :(得分:1)

现在我们在2017年,事后看来,看起来Powershell是一个不错的选择,恕我直言。