当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 自动化决策

作者:精品下载站 日期:2024-12-14 08:07:51 浏览:13 分类:玩电脑

自动化决策


从 DOS 3.3 开始,我就一直在编写脚本并实现自动化,从批处理文件开始。总感觉就像有魔法一样。我只需在键盘上敲几个字符就可以施展魅力。自然地,我的魔法技能从批处理文件到 VBScript 再到 PowerShell。在整个过程中,我还有一个关于自动化的内部决策树。多年来,我看到刚刚接触脚本和自动化的 IT 专业人员陷入了不必要的挣扎。通常这是由于决策树的缺陷造成的。今天,我想我会帮助你培养你的。

值得投资吗?

这是在考虑新的自动化项目时应该问的第一个问题。我相信你们都听过这句话:“仅仅因为你可以做某事并不意味着你应该这样做。 ” 对于 PowerShell 来说尤其如此。

PowerShell 可以轻松实现任务自动化。理想情况下,您可以使用 PowerShell 和自动化来处理重复性任务,尤其是必须定期完成的乏味任务。您开发的任何 PowerShell 解决方案都需要投资。至少,您需要投入时间来编写代码。这是你从其他工作中抽出的时间。根据任务的不同,您可能需要投资额外的教育材料,例如书籍或课件。

当您考虑一个新的 PowerShell 项目时,您需要能够估计需要多少时间。随着经验的积累,这会变得更容易。凭借经验,您还会发现可以在更短的时间内做更多的事情。您需要权衡所需的时间和节省的时间。例如,我可能不会花时间围绕启用 Active Directory 回收站功能构建工具。是的,您使用 PowerShell,但这不是一项持续的任务。但我会创建一个 PowerShell 工具来重置用户的密码。

当然,也有例外。您可能希望开发 PowerShell 解决方案作为提高和扩展脚本编写技能的方法。大家都知道我开玩笑说花了一天时间编写一个 PowerShell 函数,这可以节省我几秒钟的时间。但是,在一年的时间里,这些秒数加起来。当我完成时,我很可能学到了一些可以在未来项目中使用的东西。在这些情况下,我使用不同的指标来证明我的投资的合理性。我节省的不是时间,而是学习过程。

最重要的是,您需要查看手头的任务,考虑需要多少投资,并计算成本效益比。您的时间有限且宝贵,因此请明智地利用它。

可以编写脚本吗?

您还需要考虑是否可以自动化手头的任务。多年来,我看到了许多对自动化帮助的请求,这让我难以置信。在这种情况下,您必须了解 PowerShell 并认识到它的设计目的是什么,更重要的是,它不能做什么。这是一个候选名单。

  • PowerShell 的设计目的不是为了单击网站。
  • 它不是为在网站上运行而设计的。
  • 它并非旨在管理用户的 Outlook 收件箱。
  • PowerShell 并非旨在管理桌面应用程序。

PowerShell 被设计为管理引擎,最初是指 Windows 服务器。此后,它的发展包括跨平台服务器管理和基于云的服务管理。我从未认为 PowerShell 是管理最终用户桌面或客户端体验的好工具。

我认识到您也许可以使用 PowerShell 来完成其中一些任务。但最有可能的是,它需要非常复杂的脚本编写,即使不是彻底的黑客攻击,也与 .NET 开发接壤。

有更好的选择吗?

仅仅因为 PowerShell 可供您使用并不意味着它是适合您的自动化任务的工具。您应该使用组策略,而不是尝试拼凑 PowerShell 脚本来管理客户端桌面。这是专为该任务设计的工具。您真的需要自动化 GUI 交互吗?考虑像 AutoIt 这样的工具。在 Windows 中执行某项操作的方法几乎不止一种。当然,您可能需要进行一些研究才能发现替代方案。

我记得几年前收到过有关 VBScript 的帮助请求。该 IT 专业人员不熟悉脚本编写,但想要使用 WMI 编写脚本来设置文件权限。这是连我都不愿意做的事情。更好的选择是使用专为管理文件权限而设计的工具,例如 cacls.exeicacls.exe。即使在今天,使用 PowerShell 管理 Windows 中的文件权限也不是一项简单的任务。使用这些遗留但仍然有用的实用程序之一编写老式批处理文件可能同样容易。

也就是说,即使有替代方案,使用 PowerShell可能是合理的。当然,假设手头的任务可以使用 PowerShell 完成。如果您需要集成其他功能,例如对 -Whatif、备用凭据或日志记录的支持,那么编写 PowerShell 解决方案可能值得您花时间。假设您已经完成了我之前建议的成本效益分析。

PowerShell 并不总是答案

到目前为止,我希望您不会因为我告诉您 PowerShell 并不总是适合这项工作的正确工具而感到惊讶,或者旧的替代方案也同样有效。我更有可能运行路线而不是 Get-NetRoute。当我只想快速浏览某些内容时尤其如此。

运行起来也同样简单:

icacls .\data.txt

因为它是运行:

get-acl .\data.txt | select-object -ExpandProperty AccessToString

假设您想要管理本地计算机上的电源设置。 CLI 工具 powercfg.exe 将是您的最佳选择。或者您需要管理本地安全设置。 PowerShell 不提供任何现成的解决方案。您很可能需要使用 secedit.exe。但请记住,没有什么可以阻止您将这些旧工具包装在 PowerShell 中。 Secedit.exe 没有 -WhatIf 等效项,但您可以编写一个具有该功能的 PowerShell 函数。

你决定

我希望您不要认为我提倡您仅在特殊情况下使用 PowerShell。这根本不是真的。我鼓励您始终思考如何使用 PowerShell 来使您的工作变得更轻松。但是,您需要对 PowerShell 可能不是适合该工作的工具的可能性保持开放态度。或者即使是,是否值得投资?在投入新的脚本项目之前,至少花点时间思考并做出有意识的决定。我希望这篇文章能帮助您做出正确的选择。至少,我相信这将是一个明智的决定。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯