我知道PowerShell非常强大,因为它是一种脚本语言,可以访问整个.NET框架(这就是我所知道的全部)。但我不太理解为什么会有这么多人热捧PowerShell,即便我用C#编写同样的代码也可以实现。
我知道PowerShell非常强大,因为它是一种脚本语言,可以访问整个.NET框架(这就是我所知道的全部)。但我不太理解为什么会有这么多人热捧PowerShell,即便我用C#编写同样的代码也可以实现。
我认为你提出了错误的问题。应该是:“为什么要使用C#,而不是用Powershell编写同样的代码?”
这是脚本与编译软件之争的老话题。脚本解决方案更加灵活(只需要记事本编辑脚本,无需编译器)。
对于小任务而言,编写、部署和更改脚本的速度都比在Visual Studio中创建项目、编译、部署到目标、修正代码、再次编译和再次部署要快得多。
但对于任何较大的任务,我绝对更喜欢使用能够编译我的代码的集成开发环境(IDE)。仅仅是在构建失败时的错误消息就能够帮助找到问题的原因。(虽然编译后的软件通常具有更高的运行效率,但随着现代CPU的发展,差异已经变得微不足道了,所以对于大多数项目来说,这已经不再重要。)
你可以使用C#或Powershell完成任何类型的项目。但并不意味着你应该这样做。
当不使用Powershell作为shell而是作为编程环境时,你可以将Powershell看作一种交互式的.NET playground。我从未使用Powershell进行GUI原型设计,但过去曾经用它来玩弄.NET对象及其方法来解决特定问题。仅仅改变命令行比每次进行编辑/保存/编译/运行循环更加高效。
此外,两种语言的适用领域非常不同。Powershell在本质上是一种管理和自动化工具,具有许多其他环境可能更加麻烦的东西的流畅访问,例如注册表、证书存储、WMI等。
你可能不想使用Powershell编写企业级数据库应用程序,也可能不想编写C#程序来在文件系统中复制某些内容。
而且你为什么要使用C#?ILASM可以做到更好的控制,而且你只是在调用BCL中的内容。
我将你的问题概括如下:
为什么我要使用(我很少了解的高级语言)而不是(我更熟悉的低级语言)?
高级语言的目的是抽象出常见任务,使它们更快地编写。许多人问这个问题,因为他们已经习惯了低级语言,无法想象高级语言的好处。
最终,一切都取决于你愿意学习高级语言的抽象,希望你能像低级语言一样熟练掌握它。