使用F#脚本替换生产环境中的powershell?

ca9*_*3d9 4 powershell f#

我一直在使用powershell脚本来自动执行生产服务器上的某些任务.但是,当我尝试对异步和并行处理等做一些事情时,它达到了它的限制.

F#脚本是否适合替换PowerShell脚本?(猜测在访问文件系统和其他操作系统对象时会更麻烦,这在Powershell中非常容易).服务器没有安装visual studio.是否可以将fsi.exe复制到服务器以运行fsx文件?

一个用例,

  1. 从慢速FTP服务器下载大型zip文件
  2. 解压缩文件
  3. 执行可执行文件以处理解压缩的文件

每个步骤需要一段时间,所以我想做类似下面的事情,这在PowerShell中很难做到

//Limit download 3 files at the same time maximum.
async {
  let! zip = GetFromFTP ...
  let! file = Unzip zip
  do! ... //Run exe to parse file
}
Run Code Online (Sandbox Code Playgroud)

V.B*_*.B. 5

你可能会发现FAKE比fsi.exe更有用.它自动化构建,但它只是一个.fsx文件,具有可以从命令行运行的不同目标.


lat*_*kin 5

F#脚本不是完全替换PowerShell的好选择 - 正如你所提到的,F#是一种低级语言,因此你需要编写更多的代码来完成基本的系统自动化工作.F#也没有与其他Windows服务器技术很好地集成,因此这将是另一场艰苦的战斗.如果你真的想要走那条路,你应该在你的服务器上安装F#3.1.2软件包,它将部署FSharp.Core运行时和fsc/fsi.

由于powershell和F#都基于.NET,另一种选择是在F#中将更多算法,计算密集型代码编写为DLL,然后将其加载到PowerShell中.您甚至可以直接在F#中编写Powershell cmdlet.我过去成功地使用过这种方法.

如果您的特定问题与代码的并行/异步执行有关,那么PowerShell 后台作业可能是相关的.

编辑:关于powershell/F#互操作性的主题,Powershell类型提供程序也可能值得研究.