Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于Windows XP脚本编写、WSH与PowerShell的建议_Powershell_Scripting_Vbscript_Windows Xp_Wsh - Fatal编程技术网

关于Windows XP脚本编写、WSH与PowerShell的建议

关于Windows XP脚本编写、WSH与PowerShell的建议,powershell,scripting,vbscript,windows-xp,wsh,Powershell,Scripting,Vbscript,Windows Xp,Wsh,在Unix/Linux开源世界中使用Bourne Shell、Perl、Python和Ruby等语言编写了大量脚本之后,我现在发现自己需要编写一些Windows XP管理脚本。传统环境似乎是Windows脚本主机(WSH),它可以使用各种脚本语言,但主要语言是VBScript,并且基于COM对象。然而,未来似乎是基于.NET的Windows PowerShell 自从20世纪70年代的Applesoft以来,我就没有做过Basic,所以我并不热衷于学习VBScript,尽管我确实学到了足够的知识

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

自从20世纪70年代的Applesoft以来,我就没有做过Basic,所以我并不热衷于学习VBScript,尽管我确实学到了足够的知识,可以编写一个小脚本来装载网络驱动器。如果我要花时间真正了解这一点,我倾向于将我的时间投资于.NET PowerShell环境,如果它真的是未来的话。几年前我做过一些C#Windows窗体编程,因此我接触了一些.NET,这也使得PowerShell很有吸引力

了解到没有人有水晶球来预测微软的未来,我希望听到任何一位PowerShell用户认为这是值得的,或者如果有人知道PowerShell的严重缺点,并建议我远离它


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

如果您倾向于向前看,PowerShell肯定是一个不错的选择,但它必须在Windows 7之前单独安装,如果您只想部署在没有进一步依赖关系的情况下运行的脚本,这可能会使WSH成为一个更具吸引力的目标。此外,.NET还没有包括在XP等古老的Windows版本中,这进一步提高了标准

不过,如果你接触过.NET,你会发现Powershell非常直观。特别是在Windows Server环境中,它似乎很快成为命令行管理的默认设置,因为几乎所有新发布的服务器组件都附带自定义Powershell cmdlet。因此,Powershell似乎是微软的一条道路,他们希望遵循一段时间。见鬼,到目前为止,他们甚至还没有埋葬COM,所以我认为Powershell至少还能生存十年,因为他们将它定位为管理任务的自动化和脚本环境

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


话虽如此,我仍然使用Windows批处理文件来处理许多应该在Windows上运行而没有任何依赖项的东西,但这只是我的一个坏习惯:)

WSH的主要优点是,它是从Windows 98开始默认安装的,甚至可能是Windows 95,但随着PowerShell现在与Server 2008一起出现,而且可以安装在XP之后的任何设备上,这已经不再是一个问题了

如果您可以完全控制脚本将在其上运行的服务器,我建议您使用PowerShell

“值得”吗

当然。原因如下。

  • 越来越多的Microsoft产品基于PowerShell,例如Exchange Server 2007、SQL Server 2008等。
  • PowerShell可以访问Microsoft.NET
  • 易于学习-您只需少量命令即可探索PowerShell的功能-例如)获取命令、获取帮助、获取成员等
  • 大多数命令的别名和映射方式与DOS或*NIX shell命令类似,例如,“ls”和“dir”是“Get ChildItem”的别名,“cd”是“Set Location”的别名
  • 这是一个很棒的开发人员工具-因为PowerShell可以访问.NET库,所以您可以在PowerShell中原型化一些.NET功能
  • 您可以像在文件系统中一样在注册表、证书、环境变量等中导航-您可以使用在文件系统中使用的相同命令来导航-例如)cd HKLM:\
  • 缺点:

  • PowerShell版本1.0不支持远程处理(2.0支持)和创建新线程(使用System.Threading.thread,但将支持2.0中的后台作业)
  • 如果您不习惯基于C#/Java的语言,学习曲线可能会很长
  • 很难创建通用的.NET对象
    • e、 创建一个通用的
      列表
      集合如下
  • $l=新对象System.Collections.Generic.List``1[[System.Int32]]


    如果可能,使用Posershell和内联C#,如果不使用-WSH,则使用-msdos批处理。

    我为Windows寻找一种最好的脚本语言已经有一段时间了(现在仍然如此)。然而,在看到所有变体之后,我最终使用了WSH的JScript。虽然Powershell显然有优势,但第一篇文章的优势似乎并不显著(内置IDE除外)。但是,缺点没有完全列出:

  • 在运行脚本之前,必须手动启用 运行它们的可能性,这使得在分布式系统上部署 网络比使用WSH更难
  • cmdlet的命名约定。这不是驼背,也不是蟒蛇尾巴。它真的灼伤了我的眼睛
  • 变量名以$开头(我想是Perl风格的?不太清楚)-这里也一样
  • 您不能使用实际路径来运行脚本
  • 相反,JScript更像C语言,不需要显式启用脚本运行,接受相对路径,区分大小写,类型松散(与VBScript相比,这两种语言对于脚本语言来说都有很大的优势)。 我对PowerShell了解不多,只是在MS Technet和网络上找到的

    所以对我来说,我拒绝powershell(甚至是kno)的两个主要原因