IT任务:F#脚本与Powershell脚本

时间:2011-01-04 05:55:28

标签: powershell f#

我知道Powershell通常被认为是Windows的IT管理语言,但是为什么/何时会选择F#,这是强类型和'intellisensed'?

3 个答案:

答案 0 :(得分:6)

我选择F#,因为它更适合我所工作的公司,将要使用它的团队,以及手头的任务。否则我会选择别的东西。

如果没有更多详细信息,我的具体情况不会更具体,但我可以提出一些问题:

  1. 你要解决的问题是什么?
  2. 使用哪种语言更容易表达问题的解决方案?
  3. 现有员工F#开发人员自己(即考虑所涉及的学习曲线)?
  4. 维护此代码的人是否会成为管理员(通常对Powershell非常熟悉,而且根本不熟悉F#)?
  5. 相关提示:不要在生产代码和基础架构中开发大量语言。

    通过各种方法尝试找到解决您遇到的问题的最佳语言,但如果您在五年内发现有人用一种不再被任何人理解的语言编写了解决方案的核心组件公司,你可能手上有一个严重的问题。

    我个人的经验法则(当然也有例外)是项目应该有一种核心语言和一种脚本语言来将它们整合在一起。应首先选择这些语言以适应问题域,其次是最大限度地提高整个团队的熟练程度。 <宠物语言'应该在生产代码或基础设施中强烈

答案 1 :(得分:3)

这取决于您的问题以及谁将维护脚本。

PowerShell在管理领域非常强大(使用文件,活动目录,csv / xml,计算机等),但它的编程能力非常有限(例如泛型的情况)。 PowerShell中的线程并不是那么容易。但没有人希望管理员他们会使用线程。相反,有后台工作可以满足管理员的需求。

另一方面,F#是真正的编程语言,这意味着它的级别非常低,因此冗长(与PowerShell相比)。用PowerShell编写的一些任务是单行的,而在F#中你会编写很多代码。除此之外 - 你将如何在远程计算机(Invoke-Command -computer myserver ...)上实现运行命令?

如您所见,这取决于您的问题。
非常重要的还有谁将维护脚本。您可能正在度假,您的同事需要编辑脚本。两种语言都需要一些时间来学习。恕我直言,学习PowerShell更容易;以功能方式思考需要弯腰。

答案 2 :(得分:1)

在这个时候,选择在F#中编写脚本可能是一个坏主意,如果他们可能需要其他人...

  1. 讲F#的人员非常小,所以你创建的脚本很少有人可以阅读或编辑。
  2. fsi可执行文件不附带.Net Framework,也不是F#运行时重新分发程序包的一部分(据我所知)。这意味着只能在安装了带有F#工具的Visual Studio的情况下执行脚本。
  3. 明显的例外,当然,如果您是一名开发人员从事F#是主要语言的项目,那么这将意味着每个重要的人将能够运行和编辑您的脚本。

    但是,我必须说,我认为即使在这种理想/特殊情况下,如果你的脚本任务涉及任务,那么使用F#可能更多工作在PowerShell中存在预先存在的cmdlet(即:文件系统任务,注册表,数据库维护,活动目录,交换,列表不断进行)。当然,如果您使用这些脚本作为学习语言的机会,您可能仍然会选择这样做,但请记住第1点和第1点。 2; - )