作为一名执行大量 Unix脚本并且几乎没有Windows脚本的Unix和Windows管理员,我想说这部分是由于Windows脚本实用程序和API令人难以置信的笨拙以及难度(也许是非显而易见的)。更好的说法)是在Windows计算机上远程运行事物。
我的意思是,这是WTF吗?
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
问题的一部分,我想,是有是一个API。在Unix下,管理员主要是在脚本化他们已经使用的命令行实用程序的自动化。在Windows下,您必须使用每个级别都不熟悉的API。例如,“假冒”是什么意思?对于Unix管理员而言,这是一个微不足道的概念,他可能会使用sudo和su并已经熟悉setuid脚本。但是Windows管理员不太可能熟悉这些内容。他们可能知道“ runas”(或等效的GUI选项),但是当他们需要做一些管理工作时,他们更有可能以管理员身份登录。
Windows中有关脚本编写的文档也很惨。一方面,它比脚本更具“解释性语言”,同样是因为他们使用的是(陌生的)API,而不是他们已经熟悉的命令。但是我认为我从未在Microsoft的文档中找到任何有用的东西,而没有找到一个已经在做一些接近我想要的事情的人,从而使我朝着正确的方向前进。似乎无处可做的事情清单。就像您已经必须熟悉Windows内部一样才能执行最基本的操作。
并不是说Unix脚本并不经常看起来像行杂音。但是Unix管理员可以从一个脚本开始,该脚本除了运行他已经知道的简单命令外什么也不做。(“我总是必须连续运行这三个命令。如果我将它们放在一个文件中,则可以在一个命令中执行!”)然后他可以在以后适应情况时继续前进。相比之下,管理员无法编写脚本“以管理员身份登录服务器;单击开始→设置→控制面板;双击系统;单击计算机名称选项卡;等等。” 是的,无论他想要达到的目标,都可能通过某个地方的API进行了显示,但是他没有办法逐步找到它。
因此,要回答“我们如何让Windows管理员执行更多脚本编写工作?”这个问题,答案是,使脚本编写变得不那么陌生。我不知道该怎么做。
老实说,答案就在微软手中。他们没有理由没有命令行实用程序来完成通过GUI完成的所有操作。(实际上,现在有很多,但是它们没有做广告,它们的文献记录很差,而且不一致。)也没有理由在GUI中没有关于什么的暗示。该按钮实际上可以。有一个工具提示,显示正在修改的API对象。或将其记录在“帮助”窗口中。
保护用户免受内部攻击的侵害没有问题,但是Windows似乎竭尽全力主动地隐藏那些内部攻击,即使是对于那些想要找到它们的用户也是如此。
ls -1 *old* | awk '{print "mv "$1" "$1}' | sed s/old/new/2 | sh