如何鼓励Windowspipe理员select脚本?

当我在第一份工作中担任pipe理员时,我感到沮丧的是,我们对Windows服务器的pipe理stream程是一系列点击式操作; 我们永远无法与具有一组shell脚本的Unix服务器的效率水平相匹配,以实现大量工作的自动化。 我很快就读到了关于WSH和ADSI的内容,并没有浪费时间学习使用脚本能够实现多less自动化。

虽然有一个巨大的问题 – 几乎没有我的Windows同事真的有兴趣学习脚本。 他们似乎对手动点击鼠标的事情感到高兴,对于使用脚本代表他们工作的前景从未激动过。 尽pipe效率显着提高,但我努力说服他们select脚本技能。 之后,我离开了这个职位,去追求一个全职的软件开发职业。

在不同的环境和不同的客户工作了将近十年,我仍然遇到Windowspipe理员主要拥有这种一般“心情”,他们尽可能避免脚本。 尽pipe可访问性水平日益提高,但Windows服务器技术正在为脚本和自动化开放。 我几乎可以确定,绝大多数pipe理员都是pipe理员,因为他们绝对讨厌执行任何types的编程任务。 有什么办法可以鼓励和激励pipe理员,脚本能够真正帮助他们从长远来看?

作为一个Unix和Windowspipe理员谁做了很多的Unix脚本和几乎没有Windows脚本,我想说,这部分是由于Windows脚本实用程序和API令人难以置信的尴尬,和困难(也许非显而易见一个更好的词)在Windows机器上远程运行的东西。

我的意思是,跆拳道是这个?

Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

我认为问题的一部分是有一个API。 在Unix下,pipe理员在很大程度上是脚本化他们已经使用的命令行工具的自动化。 在Windows下,你必须使用这个每个级别都不熟悉的API。 例如,“模仿”是什么意思? 这对Unixpipe理员来说是一个微不足道的概念,他们可能会使用sudo和su,并且已经熟悉setuid脚本。 但是Windowspipe理员不太可能熟悉任何一个; 他们可能知道“runas”(或者等效的GUI选项),但是当他们需要做一些pipe理工作时,他们更可能以pipe理员身份login。

而在Windows脚本的文档是悲惨的。 首先,它比脚本更“解释性的语言”,因为他们正在使用(不熟悉的)API,而不是他们已经熟悉的命令。 但是我不认为我曾经发现微软的文档中没有任何有用的东西,这些东西并没有被发现,而是find了一些已经在做我想做的事情的人,这些东西指向了正确的方向。 似乎没有任何东西可以列出。 这就像你已经必须熟悉Windows内部,以做最基本的事情。

不是Unix脚本经常看起来像线噪声。 但是一个Unixpipe理员可以从一个脚本开始,它只能运行他已经知道的简单命令。 (“我必须连续执行这三个命令,如果我把它们放在一个文件里,我可以用一个命令来完成这个命令!”)然后他可以随着时间的推移来适应这种情况。 相反,pipe理员无法以脚本“以pipe理员身份login到服务器;单击开始→设置→控制面板;双击系统;单击计算机名称选项卡;等等” 是的,无论他想要达到什么目的,都可能是通过某个API提交的,但是他没有办法逐步find。

因此,要回答“我们如何让Windowspipe理员做更多的脚本?”的问题,答案是,使脚本不那么陌生。 怎么做,我不知道。

老实说,答案是在微软手中。 没有理由,他们不能有一个命令行工具来完成通过GUI完成的所有工作。 (实际上现在有很多,但是他们没有被广告,他们没有logging,而且是不一致的。)没有任何理由可以在GUI中没有提示什么该button实际上是。 有一个工具提示,显示正在修改的API对象。 或者在帮助窗口中logging它。

从内部屏蔽用户是没有问题的,但是Windows似乎正在积极地隐藏那些内部的东西,甚至是那些想要find它们的人。

给他们一个任务,只能通过一个脚本完成 – 例如,我曾经为每个文件夹创build数百个文件夹和自定义权限,并且必须更新每日。 如果他们手动做这个,那将是他们唯一的工作。 这个脚本使用CACLS来根据分隔的文本文件的输出来重置权限,花了大概一天的时间来完成(基本脚本大概在一个小时内完成)。

当你开始看到你能用脚本做什么的时候,这可能是一个巨大的胜利。

我曾经雇佣过一个完全拒绝做任何“编程”的系统pipe理员,试图以身作则领导他。 我能从他身上得到最好的结果是使用现有的代码和修改variables赋值或主机名等。 完成工作。 有些人不会为编程而烦恼,所以你需要降低他们的屏障。

微软正在为此付出努力。 在SQL Server中,现在有可能在Management Studio GUI中点击一些东西,然后将你刚刚完成的t-sql脚本转储出来。 这是伟大的,特别是对于不那么倾斜的Windows系统pipe理员编程。

我注意到System Center虚拟机pipe理器具有相同的视图脚本function,只是它抛出了一个PowerShell脚本。 我想很多其他的产品线也是这样介绍的。

如何激励pipe理员进入脚本? 艰难的通话,一个好的pipe理员是一个懒惰的pipe理员,这意味着一个pipe理员将脚本尽可能多。 有时间点击事物的pipe理员不是很有效率! 重载你的pipe理员这么多的工作,他们别无select,只能脚本。

我全心全意地同意你的post。 不幸的是,如果没有强制使用脚本的pipe理和stream程的支持,我认为没有什么可以做的。 给出一个select,人们将永远与熟悉和容易。 有时候,这可能看起来像一个负面的问题,但有时候,简单和熟悉是一个加号。

一方面,Windows系统隐含地意味着简单/容易,而Unix / Linux系统则更加困难和宽松。 那么谁能指责pipe理者走最小的阻力呢? 当你或我或其他许多人认识到脚本的力量时,人们终究会学习这种或那种方式。 通常,坚持使用脚本的pipe理员学习困难的方式。 我喜欢更聪明地工作,其他人可能只是想工作。

有什么办法可以鼓励和激励pipe理员,脚本能够真正帮助他们从长远来看?

我曾经认为你可以激励人,但现实是,除非你负责他们,成功“动机”的可能性非常低。 我现在的态度是:那些想学习的人,我会帮忙的。 不要成为没有人需要的产品的推销员,不pipe他们是否需要它。 当你帮助/教导一个有动机的人(无论出于何种原因)时,他们将成为变革的催化剂。 不是你。 只是我的两分钱。

我经历的口号是“工作更聪明,不难”。 多次执行任何过程意味着通常有一种方法可以通过鼠标单击,bash脚本或其他方法自动完成脚本编写。 我看到的方式,使我自由地完成了更重要的任务,而不是系统pipe理的“体力劳动”。

那些想要避免编写脚本的人可能会有几件事情要经过他们的头脑。 也许他们喜欢GUI界面,不想学习命令行或编程。 也许他们认为通过编写脚本,他们基本上减less了自己的自我重要性。 无论哪种方式,这不是我想要的那种雇员,不愿做任何forms的脚本表明他们是什么样的工人。 我宁愿有一个问题解决者,而不是一个“愚蠢的”系统pipe理员。

就鼓励和激励他们而言,我只想说像你这样做,展示生产力的增长,以及如何使他们的工作更容易。 对于某些人来说,作为一个Windows系统pipe理员只是一个薪水支出,激励他们超越过去十年来为他们工作的点点滴滴的心态是很难的。

有几个问题需要克服,你提到过,很多pipe理员不想参与编程,甚至和脚本一样低。 另一个与此有关,这是一个控制的问题。 当pipe理员手动执行任务时,他们确切地知道每个阶段发生了什么。 许多pipe理员可能会觉得用脚本代替它们会失去对这个过程的控制,特别是如果他们不理解脚本,也不会写脚本(也不想写这个脚本)。

我认为这对于Windowspipe理员来说比Unix更重要,因为脚本编写一直是Unixpipe理的一个重要组成部分,通常是Unixpipe理员从一开始就学到的东西,其中Windowspipe理和它固有的GUI-这导致了一个更加人工的过程,脚本看起来不自然。

不幸的是,让开发人员在这个驼峰是一场艰苦的战斗。 对于pipe理员仍然觉得他们在控制,他们需要了解脚本正在做什么,所以真的需要了解和学习如何编写脚本,唯一的办法就是让他们这样做,如果他们真正理解脚本可以对他们做些什么

一切都很好,说会让事情变得更快,让生活变得更轻松,但是你能certificate这一点吗? find他们讨厌的任务,他们必须定期做,并尝试自动化。 如果你可以承担这个可怕的任务,并把它做成一个单一的点击脚本,他们会爱你,但更重要的是,他们可能会看到使用脚本的好处。

[叹气]这在Windows世界中太普遍了,虽然我会质疑你对大多数人不想小马和学习脚本的陈述。 我在系统pipe理职业生涯中所做的绝对最伟大的事情是学习VB和Perl,这导致了VBS,这导致了许多其他的事情。

如果只是显示他们不起作用激励,我喜欢使用的一个技巧是在pipe理面前抛出微妙的声明:)如果你愿意,可以称它为吸吮,但事实并非如此。 向决策者展示好处,往往开始通过团队扩散。 尽pipe如此,不要太过分了。

从更微妙的angular度来看,改变某个人很难(如果不是不可能的话)。 以身作则!

这个问题是非常主观的。 虽然我同意脚本提供的效率和增强的控制,但为什么它必须是一个授权? 为什么你需要鼓励人们使用脚本只是因为你喜欢使用脚本? 为什么不让人们select使用他们喜欢的工具?

这个问题也说明了IT世界中存在的一个普遍的偏见:如果我不写脚本,我不能像脚本那样聪明或者好,那是错误的。 我知道很多人可以比我脚本更好,但他们不能子网保存他们的生活,或找出如何运行networking跟踪,或configurationSQL服务器使用AWE,或不知道什么引导。 ini文件是等等,等等。

老实说,你可以带马去喝水,但是你不能让他喝酒。

大约10年前,我在海军陆战队中担任系统pipe理员,在pipe理员和编码人员之间存在很大差距。 作为一名编码人员通常意味着,你遇到了CO的宠物项目网站(实际工作做得很less……)。

正因为如此,我拒绝学习编码,但是一旦我决定尝试编码,我就爆发了。

至于绘制某人,尝试使用AD / LDAP脚本引诱他们英寸(我认为这是一个比处理WMI更容易访问)分配一个任务的进展,说:“给我的用户名和电子邮件地址的XYZ组的人“。

我写了这么一小段代码来find所有不属于任何指定组的成员: https : //github.com/gwaldo/LDAP-Inverse-Group-Membership-Report

至于资源,请查看微软脚本专家(谁有优秀的文章和教程)和Scriptomatic2,我喜欢挖掘到WMI。

下一个问题:他们为什么要脚本? 这将决定答案。

据推测,你脚本,因为它更有效率。 在这种情况下,您可以向其他人展示其他人,或者向pipe理层指出pipe理系统的方法更为有效,并等待他们以降低成本的方式利用这些方法。

有权威的人可以指定脚本,要求有脚本来处理大部分事情。 这将如何运作取决于几件事情; 如果只是这样说的脚本可能会严重不足和过时,而pipe理员正常工作。

还有一个问题是如何影响你的。 这是否只是打扰你,或者如果你的同行pipe理员编写的东西,你的生活会更好?

我其实还有另一个想法。 关于初级Windowspipe理员用于graphics用户界面交互的事实,也许这将有助于你开始他们与脚本GUI交互,像AutoIt的东西。 这样,他们就可以在脚本方面走上正轨,同时仍然允许他们使用他们已经知道的工具,而不是扔掉现有的工具,让他们同时学习新的工具和脚本。

然后,一旦他们对脚本的概念感到满意,他们就可以转向非GUI脚本。 即使没有,自动化button点击仍然可能是一个很大的节省时间。

我已经将脚本定义为“为您工作的文档”。

经理:花费无数个小时来创build文档,一年级的学生可以理解,这将在本周末结束,让你的同事通过任务X点击点击。

员工:我有一个Task-X的脚本,我可以给他们。

经理:当然,在你完成我刚刚要求的文件后,还要用stream程图logging你的脚本。

我已经将脚本定义为“为您工作的文档”。

经理:花费无数个小时来创build文档,一年级的学生可以理解,这将在本周末结束,让你的同事通过任务X点击点击。

员工:我有一个Task-X的脚本,我可以给他们。

经理:当然,在你完成我刚刚要求的文件后,还要用stream程图logging你的脚本。

不要忘记文档应该在MS Word文档中,以便从服务器上读取文档变得复杂。