Windows中哪些脚本语言有用?[关闭]


48

哪些脚本语言对Windows自动化有用?


10
我给+1是因为我可以看到您写的内容背后隐藏着一个有趣的问题。虽然如此,但我认为“主要”是一个不幸的词选择,您应该对其进行编辑以减少模糊性。取决于您的意思,也许是“最常用的”,“最受支持的”或“推荐的”。欢迎来到超级用户!:)
布伦南·文森特

2
@布伦南·文森特(Brennan Vincent):这是一个很好的建议,但是此时更改“主要”一词可能会损害答案的精神。我认为您的评论就此事发表了很多意见,这个问题最好留给原样。(+1了你的是,顺便说一句。)
兰道夫·理查森

1
目前,我认为这个问题属于主观范畴。但是,对Brennan建议的措词稍加修改,我认为这可能是一个非常有趣的社区Wiki条目。
乔·泰勒

1
看起来对我也很主观。对于脚本语言,“主要”或“最佳”或“首选”将根据要完成的特定任务以及个人的技能和经验而有所不同。
伊兹(Iszi)2011年

3
我想问的意思是:当今Windows 本机脚本语言是什么?即,哪种脚本语言在OS中具有内置的挂钩和功能,而不需要API,ActiveX等来完成任务?
Synetech

Answers:


36
  1. 电源外壳
  2. Windows脚本宿主
    一个。VBScript
    b。脚本
  3. 批处理文件

PowerShell(v2.0)

从Windows 7和Server 2008开始,考虑将PowerShell随Windows一起提供是合理的,而且管理服务器软件(例如Lync和Exchange)也是基本的,因为它们具有一整套命令。可用功能列表越来越多,有关详细信息,请参见脚本中心

Windows脚本宿主

Windows脚本主机(WSH)从技术上讲是ActiveX脚本引擎的脚本主机。VBScript和JScript(Microsoft的JavaScript实现)是默认安装的两个引擎。还有许多其他开源软件,包括Perl,PHP和Ruby。

VB脚本

使用与VB6和VB.NET相似的语法,VBScript缺乏对.NET类的轻松访问(Powershell是在.NET上编写的,因此可以访问所有.NET函数)。VBScript主要利用WMI服务及其公开的对象。

示例:这将创建一个还原点。

Set wmi, whatName, errResults
wmi = GetObject("winmgmts:\\.\root\default:Systemrestore")
whatName = InputBox("Enter a name for the Restore Point",WScript.ScriptName)
errResults = wmi.CreateRestorePoint (whatName, 12, 100)
If errResults <> 0 then
    Wscript.Echo "Error " & errResults & " : Unable to create Restore Point"
End If

脚本

您也可以使用ECMAScript编写相同的脚本:

var wmi = WScript.GetObject("winmgmts:\\.\root\default:Systemrestore");
var whatName = WSHInputBox("Enter a name for the Restore Point",Script.ScriptName);
var errResults = wmi.CreateRestorePoint(whatName, 12, 100);
if(errResults != 0) {
    WScript.Echo("Error "+ err + " : Unable to create Restore Point");
}

命令批处理文件

当然,还有不错的批处理文件。他们不需要介绍。


7
对于Windows 7和Server 2008,它将是Powershell 2.0
sshow

@sshow同意具体讲到2.0
Nick Josevski 2011年

“他们不需要介绍。” 但是确实需要介绍一下...
格伦·杰克曼(Glenn Jackman)2014年

16

即使在Windows 7中,我仍然写DOS批处理文件。对于大多数任务,这仍然可以很好地工作,并且使用起来非常简单(此外,随着时间的推移,许多DOS命令(例如“ FOR”)也得到了改进,并提供了更多功能。选项和功能是十年前才推出的)。

对我来说,DOS批处理文件仍然是Windows的主要脚本语言(它肯定是传统的),但是每个人的需求和偏好都有所不同。DOS批处理文件有很多不能做的事情(脚本语言也会造成限制),并且在极少数情况下遇到这种情况,然后我会查看其他选择(通常是Perl,或者有时是是编写一个小型程序还是整个应用程序)。

了解您需要完成的工作是决定使用哪些工具的非常重要的一步。熟悉工具是另一个可能限制您选择的重要方面。如果您试图确定学习哪种脚本语言,那么希望对您有所帮助。


10
如果用“主要”脚本语言来表示“最古老和使用最广泛”,那肯定是正确的答案。但是,cmd确实是一种怪诞的事情,很容易让我不幸使用过的WORST shell脚本语言。
JSBձոգչ2011年

3
当脚本需要在其他版本的Windows上使用时,我也使用批处理文件。如果仅使用Win7 / Server 2008,则可以使用PowerShell。
jtreser 2011年

5
1,我知道MS需要PowerShell的是,但现在如果你想派人运行“窗口”的脚本,你必须给他们一个DOS批处理文件。PS非常适合用于某些任务的Windows特定版本,它们具有很多功能,但是批处理文件是通用的。
艾伦·杰克逊

在某些公司(例如我目前工作的银行)中,执行策略会阻止PS脚本执行。因此,我正在学习批量翻译我的PS脚本。因此,在某些情况下仍需要批处理...
T_D 2016年

我在2011年同意了您的回答,但是在Windows 10 Creators Update中,Microsoft将PowerShell设置为按Win + X,在“开始”菜单中键入“ cmd”并在右键单击资源管理器时按住Ctrl的默认选项。因此,现在我将Powershell视为Windows的默认脚本语言,因为Windows 10 Creators Update和BAT / CMD旧脚本。
乔纳斯(Jonas)

10

那要看你问谁。有些人永远不会离开批处理,有些人喜欢vbscript,有些人喜欢powershell,有些人喜欢AutoIt。然后还有一些独立于平台的工具,例如Python和Perl,其中有些人会为所有事情发誓。


2
+1表示跨平台脚本语言(Perl是我的最爱,并且我知道Python多年来也越来越流行)。
兰道夫·理查森

2
为Perl +1。它在许多平台上很有用,并且具有一些Windows特定的模块。
RedGrittyBrick 2011年

1
我要补充一点,TinyPerl是一种嵌入非常简单的Perl脚本且没有太多依赖关系的非常有用的方法。在Windows上它将编译为一个很小的EXE文件。tinyperl.sourceforge.net
Benoit

4

我想Windows的正式脚本“语言”应该是Windows Script Host(从Win95开始就是这样)。

从技术上讲,WSH本身并不是一种语言,而是一种暴露COM接口以允许您(几乎)使用所需脚本语言的环境(不是GUI)来执行OS事务,甚至没有内置本机方式的事物。语言(例如,Ruby没有内置登录Windows的方式,或者TCL / TK没有内置显示“运行”对话框的方式)。

您可能已经看到一些WSF文件,其中一个文件中可能包含多种语言,但是通常WSH脚本是用一种语言编写的,并且以与该语言的脚本版本相对应的扩展名分发(例如,VisualBasic脚本的VBS,PythonScript的PYS等) )


[颤抖加剧],我曾经写过。您知道可以从IE运行任意WSH脚本吗?那不是古朴的。很好,他们如何在网络上开放大量的api。(免责声明,这种犬儒
主义

关于WSH和IE的故事并非如此简单:msdn.microsoft.com/en-us/library/bb250473v = vs.85).aspx(仅仅是一个限制示例,具体取决于安全区域),而IE 11却没有除了旧版模式外,它甚至不再支持VBScript。不要依赖IE执行WSH脚本。
乔纳斯(Jonas)

4

我会说AutoIt,它在Windows上提供了非常快速和轻松的开发,并且与它紧密结合。这意味着通常需要用其他语言编写大量代码的任务可以自动在一行中完成。直接编译到exe之类的功能也非常有用。


像单调的人一样,我使用AutoIt。它具有极强的通用性,可在几分钟内完成快速原型设计和测试。其中,它是为自动化而设计的,这是我看到很多人使用Powershell的原因。试试看:)
詹姆斯

1
AutoIt非常酷,特别是对于UI功能(行为就像用户在对话框中键入,按按钮等)一样,但是使用“主要” Windoze脚本语言进行调用确实是一大难题。这些天来,我的大多数同事(由20多名Windows管理员组成的团队)甚至都没有听说过。
ewall

2

此问题中指出的其他语言(VbScript,PowerShell,批处理)非常受欢迎并受支持。如果您已经知道一种脚本语言并且对它感到满意,那么无论如何都可以。

如果您打算投资购买一种新语言,我会根据您要尝试的工作为您建议两种语言:

JavaScript(通过WSH) -如果要通过实例化各种自动化对象并调用其对象模型来使用各种自动化对象,请使用JavaScript。您可以为从Exchange服务器到WMI到Office文档的几乎所有内容创建一个自动化对象。Visual Studio提供了调试支持(带有/ x参数)。同样,对JavaScript的投资也将证明对HTML很有用。

Perl-如果可以启动其他程序,操纵它们的输出,执行正则表达式,请使用Perl。尽管目前看来这种语言正在减少,但它仍然是一种非常流行的语言,并且得到了大型社区语言的很好支持。您还应该考虑使用这种语言与其他服务(不一定是Windows)进行通信,例如企业上的JIRA或亚马逊上的EC2。EPIC在eclipse中支持调试,这也是一个不错的IDE环境(语法着色等)。CPAN中有所有模块。当必须在非Windows计算机上进行自动化时,Perl知识将被证明是有用的。


1
Python是perl的非常好的替代品,尽管您要使用两者的东西几乎完全相同
Phoshi 2011年

1

早期,出现了VBScript,接着是Batch,在具有纯Windows 7和Server 2008 R2的企业环境中,新的脚本语言Powershell引起了很多关注。


您似乎表达了对PowerShell接管的强烈渴望。假设您“想成为” PowerShell会公平吗?;-D
兰道夫·理查森

与vbscript相比,我更喜欢Powershell。
EKS


1

它几乎可以是任何东西,具体取决于您尝试自动化的方式。从批处理文件和PowerShell到自动热键和Selenium(如果需要自动化一些与GUI相关的任务),它会有所不同。

通常,如果您需要添加一些修改或支持已经编写的脚本,则学习它不是问题。如果您需要开发新的东西-根据需求以及您已经知道的内容选择语言/方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.