.net 是否要从批处理文件迁移并使用。。。?

.net 是否要从批处理文件迁移并使用。。。?,.net,scripting,powershell,.net,Scripting,Powershell,目前,我们使用批处理文件来加载过程、执行脚本文件和调用存储过程,方法是调用sql sefver实用程序cmdutil、dtexec和osql 根据返回的退出代码的值,我们确定下一步运行 批处理文件对我来说似乎有点原始,我想我会更乐意在驱动程序.NET程序中编写这种“作业控制流”代码,但我假设大多数开发人员会选择使用某种脚本语言来完成这项工作 我正在考虑使用VB WSH脚本,因为它似乎为我提供了更好的语言构造(例如,if-then-else)和对COM对象的访问,但我认为即使这样也有点过时,我应该

目前,我们使用批处理文件来加载过程、执行脚本文件和调用存储过程,方法是调用sql sefver实用程序cmdutil、dtexec和osql

根据返回的退出代码的值,我们确定下一步运行

批处理文件对我来说似乎有点原始,我想我会更乐意在驱动程序.NET程序中编写这种“作业控制流”代码,但我假设大多数开发人员会选择使用某种脚本语言来完成这项工作

我正在考虑使用VB WSH脚本,因为它似乎为我提供了更好的语言构造(例如,if-then-else)和对COM对象的访问,但我认为即使这样也有点过时,我应该研究Powershell

我的问题是:

与编译的.NET代码相比,使用Powershell开发工作流控制程序有哪些优点/缺点?我怀疑使用VisualStudioIDE的开发环境和编译时检查会使我比使用脚本更有效率


我在做一个hello world应用程序,试图利用PS提供的一个.NET库,我得到的印象是PS只是对糟糕的代码吹毛求疵。与编译的.NET代码相比,它是否具有足够的错误处理能力?

Powershell可以执行批处理文件中的任何操作,也可以使用C#执行任何操作

它是一种非常好的脚本语言(在Powershell中也可以找到用Ruby和Python编写脚本的简易性),而且还有一些很好的IDE。鉴于它在VS中不完全受支持,在这方面有一些努力,如

使用Powershell,您可以像在其他地方一样使用退出代码进行错误管理,还可以尝试捕获异常和其他构造,如陷阱、
抛出
等。Powershell中包含丰富的错误管理功能。您还可以使用诸如
Add Type
之类的cmdlet在Powershell中使用C代码

答案的主观部分:

我怀疑事态的发展 环境和编译时检查 使用VisualStudioIDE将使 我觉得使用脚本更有效率

您想要做的似乎非常适合编写脚本。Powershell是在Windows上编写脚本的自然选择。我不知道“编译时检查”是如何使您的工作效率更高的,我本以为脚本语言具有使您的工作效率更高的优势


我真的不明白你所说的
PS只是对糟糕的代码吹毛求疵的意思,但是Powershell和其他任何语言一样,糟糕的代码与否取决于你是如何编写代码的。

也许也有可能使用ironpython?当然,如果您更喜欢python而不是powershell,并且能够在运行脚本的任何机器上安装它,那么就可以这样做。您在visual studio中也有一个很好的开发环境。

Powershell/.net开发人员取决于您拥有的开发人员类型。对于您正在查看的任务类型,可能没有太多不同的性能。可能的答案是在.net中编写代码,并使用powershell将其全部组合在一起,因为powershell可以与.net和所有方法完美集成。从.net访问com对象没有那么多乐趣,在powershell中可能更容易。

我同意回答说你可以用powershell做任何事情。你可以。对于典型的流量控制,错误处理是足够的。我感兴趣的是你关于脚本语言和编译语言的问题

这些工具之间有着根本的区别。编译语言是一个黑盒子,而脚本是可延展的。这两个文件对各自的开发人员都具有同等的可塑性,但一旦一个程序被编译并部署到100台服务器上,除了开发人员之外,该.exe文件对所有人都是不可变和不透明的。当您将一个脚本部署到100台服务器时,100名管理员都可以查看它,从中借用它,并以灵活的新方式利用它

PowerShell允许我的团队中的5名管理员在没有MSDN许可证的情况下浏览我的代码,就在代码运行的服务器上。他们可以借钱,调整,并开始了解发生了什么。来自其他团队的管理员也可以这样做,而不必弄清楚要签出哪个CVS存储库


我会推荐一些小脚本,它们可以很容易地通过管道连接在一起,并带有适度的注释。有一天,他们可能真的会被人读到。:-)

需要明确的是,批处理文件确实允许您响应特定的错误代码(int)。你说的是对特定异常的响应吗?是的,特定异常。我还想知道,与PowerShell相比,使用powerscript是否更可能使Iron*语言中的“坏代码”和“好代码”得到不同的调整。尝试让所有服务在一个盒子上运行并停止它们。Get Service |其中{$\ Status-match'run'}Stop ServiceCOM与PowerShell的集成是它的亮点之一。下面是从PowerShell调用Excel数学函数的示例