请注意:便携式,如在portableapps.com,不是传统的定义。 最初张贴在stackoverflow.com,在这里询问另一位用户的build议。
我是DBA和系统pipe理员,主要是运行SQL Server的Windows机器。 我正在寻找一种不需要pipe理员权限或安装程序的Windows编程/脚本语言,除了扩展到文件夹外,不需要任何安装过程。 我的意图是有一个我可以标准化的自动化语言。
到目前为止,我一直在使用batch file和Unix shell的组合,使用UnxUtils中的 sh.exe,但这并不是完美的解决scheme。
我已经评估了一些选项,他们都至less有一个严重的缺点或另一个。 我对开源或双许可证有强烈的偏好,但我更感兴趣的是find合适的工具。 对那些依赖于Cygwin或者Java的东西没有兴趣,但是在这一点上,我会很满意一些需要.NET的东西。
要求:
奖励积分:
到目前为止我已经尝试过:
—-削减:澄清点
为什么所有的限制?
我意识到我的一些标准似乎是任意的限制。 这主要是我的环境产品。 我在一家大公司的一个部门担任SQL Server DBA和备份Unixpipe理员。 除了近百个在Windows上运行SQL Server版本的盒子外,我还支持在现场上千台机器上安装SQL Server Express Edition。
由于我们的安全策略,我没有在每台机器上login权限。 通常情况下,一个问题出现了,我被授予本地pipe理员一段时间。 通常情况下,这是一个我从来没有碰过的盒子,还没有我自己的环境设置。
我可能有临时的pipe理权限,但我不是机器的pipe理员 – 我只是DBA。 我没有兴趣踏上Windowspipe理员的脚趾,也不想接pipe他们的任何职责。
如果我提出“安装”的东西,突然间它成为生产控制和Windowspipe理员感兴趣的问题; 如果我抄写一个脚本,没有人介意。 这个区别对读者来说可能没有多大的意义,但是如果有人得到错误的想法,我会在安装好这个工具之后,突然间等了很长的一段时间,然后才能解决问题。
这就是为什么我想要一些可以复制和运行便携式应用程序的方式。 小脚印呢? 我的公司有三个部门,分别在不同的地理位置,其中之一是一个新的收购。 我们在每个部门都有不同的生产控制/安全策略。 我支持所有三个部门的MSSQL数据库。 现场机器遍布美国,有时通过非常缓慢的链接连接到VPN。 使用psexec安装Ruby \需要很长时间来处理这些连接。 在这些情况下,更大的时间浪费似乎是成千上万的文件,而不是他们纯粹的大小档案。
你可以说我被Unix弄坏了,pipe理员通常至less安装了一些现代脚本语言。 我会使用PowerShell,但是我不太了解它,更重要的是它并不是我需要工作的地方。
这是一个经常发生的事情,我需要在一些从未login过的机器上短时间编写,部署和执行一些脚本。由于在每台需要接触的机器上安装了Ruby或类似的东西实际上是不可能的由于批准,时间和Windowspipe理员的工作需要我更有意义的find一个解决scheme,让我按自己的条件工作。
有了今天的存储容量,为什么你的“可pipe理的足迹”如此之小(以及为什么文件的数量很重要)呢? 我的个人偏好是Perl,只有大小的缺点。 事实上,如果你在一个AD中,你可以将ActiveState Perl安装到UNCpath,并从任何机器访问UNCpath,这样你就不必在所有其他机器上安装任何东西。
使用Perl2EXE,你可以将任何东西打包到一个EXE中,但是它不够优雅或者尺寸效率。
此外,除了您所期望的非Windows兼容性之外,PowerShell还可以执行此操作,除非要求在没有安装程序的情况下运行。 老实说,你可能认为它是操作系统的一个可选部分,只是把它添加到你的标准环境(如果你有任何控制环境)。
所以,这是我的两个build议。
我不认为它满足所有的要求(SQL Server \ ODBC方面,这显然是关键),但我有一个古老的(1996年的date戳)Perlv4 exe文件,随身携带随处可见,因为每当我只想做快速和恶心的东西。 379k – 1文件,无需安装,运行在每个Windows操作系统上我已经尝试过了。
我会说vbscript / jscript是你现有的2003年环境最好的select。 如果您可以稍微调整一下您的规格以允许安装,那么PowerShell是前进的方式,特别是当PowerShell当前可用,并将用于SQLpipe理。 如果你真的想要可移植性(坦率地说,这意味着你的脚本潜力只限于从文本文件和文件名parsingstring),那么我会说你下一个最好的select是Perl。 Perl不需要在Windows上安装就可以运行。 请注意,如果您只需要unix命令,则不需要unxutils,只需要为unix子系统安装服务。
所有这一切说,我认为你的前提是有缺陷的。 我想不出一个我想在自动化语言中“标准化”的理由,因为* nix和windows任务的任务要求将需要大不相同的编码types。 例如,对于Windows中的许多系统任务,您将使用WMI调用。 WMI在* nix上不可用。 (是的,我知道CIM是但不一样)。 即使像文件名path这样的简单的东西将被parsing和写入不同。 我build议使用现有工具的最佳工具,而不是试图把不可避免的方形钉子打成圆洞。
半英寸的脸颊:嘿.. VB脚本随着操作系统,你的足迹需要得到多less小?
否则,我真的,真的推荐Ruby。 为什么你需要“一个小脚印”? 我将Ruby放在了几台Windows服务器上,因为它非常方便,而且不需要pipe理员权限(虽然这本身就是一个大红旗,但是让我们跳过这个)。
怎么样便携式autohotKey
不要靠名称,这是很好的通用自动化脚本语言。 我相信它涵盖了你想要的所有东西。
AutoHotkey命令参考
另一个投票在这里VBScript; 它几乎可以满足您的所有需求; 虽然大部分的“奖励积分”都漏了出来。
可移植的Python ,绝对(我知道你试过:)
所以,这里是关于脚本的两分钱。 在生产系统…使用什么在那里,Windows 2003的 – VBScript,UNIX Bash / Perl的/python/什么(我个人使用bash和Perl的组合)。
即使解释者声称占位面积很大,引入问题的可能性也是巨大的。 即使你只是临时复制了一个可执行文件,它实际上也应该通过变更pipe理。
这是我的想法:我就在那里与你的pipe理员 – less安装好。 另外,如果你真的认真思考你正在做的任务,你是否真的需要用多种语言进行维护? 大多数脚本是特定于任务的,因此是OS /应用程序特定的。
我同意用一个脚本(语言)来统治所有types的情况是很好的 ,但是我认为你会发现使用框中的本地语言可以做更多的事情。
另外,如果你把所有的脚本放到版本控制系统中,它也会让你的工作变得更容易。 我有一个littel CVS服务器设置,包括我的Powershell,VBscript,bash,perl和php脚本。