我是一名熟练的C#程序员,但对PowerShell还比较陌生。它有什么用处?更适合于程序员还是管理员使用?
请分享您的经验。在什么情况下编写一个使用.NET程序集的脚本比编写C#工具更容易?您用它来处理哪些真正的产品任务?
也许问题应该是:与C#相比,它有什么优点,而不是与批处理相比?
我是一名熟练的C#程序员,但对PowerShell还比较陌生。它有什么用处?更适合于程序员还是管理员使用?
请分享您的经验。在什么情况下编写一个使用.NET程序集的脚本比编写C#工具更容易?您用它来处理哪些真正的产品任务?
也许问题应该是:与C#相比,它有什么优点,而不是与批处理相比?
"\\\\\\server\\\\share"
(如果我没记错的话)。这是一个猜测游戏,取决于字符串被评估的次数,你需要猜测反斜杠需要转义多少次。代替自定义命令行实用程序:
您可以使用PowerShell来替代之前编写的各种小型命令行实用程序。 PowerShell是一种相当强大的脚本语言,可让您访问大多数.NET Framework。它特别擅长参数解析,即它具有内置的参数解析引擎,可为您提供:命名参数、位置参数、可选参数、开关参数、管道绑定参数、参数验证等功能。现在考虑一下,在您典型的命令行实用程序中,有多少代码是专门用于参数解析而不是实际功能。我几乎停止编写命令行实用程序(除非它们特别复杂-那么您无法击败VS调试器)。然后我让PowerShell为我处理所有参数解析。并且使用PowerShell 2.0非常容易通过在脚本中添加一些适当格式化的注释来为您的实用程序添加文档/用法。 private bool VerifyPowerShellScriptSignature(string path)
{
using (var runspaceInvoker = new RunspaceInvoke())
{
Collection<PSObject> results =
runspaceInvoker.Invoke("Get-AuthenticodeSignature " + path);
Signature signature = results[0].BaseObject as Signature;
return signature == null ? false :
(signature.Status == SignatureStatus.Valid);
}
}
PowerShell是一种强大的工具,您可以使用它完成多种不同的任务,否则这些任务需要用户使用鼠标...(不仅限于此)。
例如,最新版本的Microsoft服务器产品如SQL Server、Exchange、SharePoint等都公开了丰富的API,可以轻松地与 PowerShell 一起使用,在这种情况下,您可以使用 PowerShell 来:
所有这些都是以前无法从批处理文件中完成的事情。
它更适合系统管理员使用的工具,但只是稍微。
我会选择PowerShell而不是C#的地方是:
我们用它来自动化我们的夜间验收测试,编译结果,更新网页和发送电子邮件给相关团队。
请注意,NuGet使用PowerShell自动添加/删除软件包到您的解决方案中。(在此过程中为您提供一个PowerShell控制台,以便您自己自动化Visual Studio。)
另外,与编译语言中的编写→调试→修复循环相比,可以交互地发展脚本,这使得快速编写简单脚本变得更容易。
我曾经使用纯PowerShell命令和C#创建了一些命令。通常情况下,我在C#中创建的命令更加复杂,我发现构建几个包含类等文件可以更轻松地维护代码。
与PowerShell相比,对于C#项目而言,更容易创建测试,因为C#是Visual Studio中的一级公民,而PowerShell不是。
全部使用PowerShell的优点在于任何人都可以编辑你的脚本。
我认为PowerShell比C#更适合需要频繁更改的小事情。
我主要将其用于我的构建和自动化设置的部分。之所以我喜欢PowerShell,是因为我的脚本几乎总是需要来自Visual Studio的某些DLL文件。
现在,如果是C#应用程序,当新版本的Visual Studio推出时,我需要使用新的引用重新编译,然后将其发布到需要的所有地方。
但是,如果是PowerShell,我只需更改脚本中DLL文件的路径,一切都没问题。此外,我发现它在文件解析和其他Perl式类型工作方面更易于使用。