Tag: powershell

通过nuget包添加代码分析规则集

我正在尝试构建一个NuGet包,它可以自动添加我们公司的代码分析字典并可以更新。 规则集已添加到内容文件夹中,现在我想使用install.ps1脚本在项目文件中添加规则集。 我想出去的方法是使用envDTE,但我找不到很多有用的文档,除了这个压倒性的对象图,我找不到CodeAnalysisRuleset节点。 http://msdn.microsoft.com/en-us/library/za2b25t3(v=vs.100).aspx 我在追求正确的道路吗? 是否有关于如何在NuGet powershell中使用envDTE的相关教程/文档? 如何运行/调试我的安装脚本而不必将其实际添加到包并针对项目安装它? 边注 虽然@Nicole Calinoiu表现出更好的方式,但这些信息可能会在以后派上用场: foreach ($config in $project.ConfigurationManager){ $config.Properties.Item(“CodeAnalysisRuleSet”).Value = “myruleset.ruleset” }

EntityFramework 6.0 CreateDatabaseIfNotExists代码首先创建数据库

我究竟做错了什么。 我有一个用户DbContext设置和工作时,我最初使用powershell创建Code-First它一切正常。 我在应用程序启动时按预期实现了Database Initializer。 Database.SetInitializer(new CreateDatabaseIfNotExists()); 只是为了测试它是否真的创建了数据库我实际上删除了数据库,现在我被困住了数据库将不会被创建。 我正在使用SQL Server 2012,任何想法可能是错的。 我得到的错误信息是 System.InvalidOperationException: Migrations is enabled for context ‘UserDbContext’ but the database does not exist or contains no mapped tables. Use Migrations to create the database and its tables, for example by running the ‘Update-Database’ command from the Package Manager Console. 我从包管理器控制台尝试了相同的操作,它仍然给我相同的消息。

处理生产配置中的密码以进行自动部署

我在这里看到了相关的问题,但它们似乎并没有完全回答我的需要。 我们使用Powershell脚本来部署我们的应用程序,并且大多数环境(UAT等)的配置文件中的密码等信息都是纯文本。 这不是一个大问题,但是当谈到PREPROD和PROD时,这是一个大问题。 因此我们在配置中有一些标记,如“{{prompt-password}}”,它将提供登录对话框( Get-Credential ),执行部署的人员可以输入凭据并继续部署。 但这对自动部署没有实际帮助(意味着通过TeamCity等工具一键部署) 我应该使用非对称加密( http://msdn.microsoft.com/en-us/library/as0w18af.aspx ),其中密码使用公钥加密,在配置中输入,并存储私钥(如上所述)这里http://msdn.microsoft.com/en-us/library/tswxhw92.aspx )在“代理”中(如在TeamCity将触发部署的VM中,并且具有受限制的访问权限)运行自动部署并且它可以解密密码? 在密码学和东西上并不是很强大,但这听起来像是要走的路吗? 还有其他建议吗? 人们如何处理这种自动部署? 更新: 好的,我已经开始实施了它。 我在C#中编写了一个使用Crypography库的控制台应用程序。 该应用程序生成密钥: RSACryptoServiceProvider rsa = GetRsa(containerName); File.WriteAllText(“keys.kez”,rsa.ToXmlString(true)); 我也拿出了公钥: File.WriteAllText(“public.pke”, rsa.ToXmlString(false)); 将公钥提供给必须加密密码并要求他们在配置中输入密码的任何人。 将keys.kez文件放在必须运行部署的任何代理中。

Powershell / C#:异步调用管道并显示结果

根据此示例 – http://msdn.microsoft.com/en-us/library/windows/desktop/ee706590(v=vs.85).aspx , 我试图以异步方式调用我的脚本。 但是,与此同时,我希望在发生的操作集上向GUI提供反馈,即想要在GUI上并行地吐出幕后发生的Write-verbose东西。 我很难实现这一点 – 因为我看到PipelineReader对象上有一个DataReady事件? 有可能以某种方式消耗上面的MSDN示例,以便我可以在GUI上显示反馈吗? 从概念上讲,我无法将此示例与DataReady事件相关联。

在Cmdlet中,如何检测Debug标志是否已设置?

我正在编写PowerShell Cmdlet并使用WriteDebug ,但我想编写一个需要额外API调用的对象,而且在关闭调试时我宁愿不进行调用。 如何检测Debug标志是否已设置,以便我可以完全跳过对WriteDebug的调用? 例如,我的WriteDebug调用将如下所示: WriteDebug(string.Format(“Name : {0}”, api.GetName(myobj))); 在该示例中,我想避免调用api.GetName除非打开调试。

如何在Visual Studio中从C#调用PowerShell cmdlet

我正在从Visual Studio创建一个PowerShell cmdlet,我无法找到如何从我的C#文件中调用cmdlet,或者这是否可能? 我一个接一个地运行我的cmdlet没有问题,但我想设置一个cmdlet来在续集中运行多个cmdlet。

将Keith Hill的PowerShell Get-Clipboard和Set-Clipboard转换为PSM1脚本

我想将Keith Hill的Get-Clipboard和Set-Clipboard的C#实现转换为纯PowerShell作为.PSM1文件。 有没有办法在PowerShell中启动STA线程,就像他在使用剪贴板时在Cmdlet中一样? 博客文章 代码

在加载到PowerShell的进程时调试C#dll? 它甚至可能吗?

我有一个powershell脚本,我通过[Reflection.Assembly] :: Load加载一个DLL 我想将刹车点放入该dll的源代码中,添加手表等。 附加到powershell进程不起作用(实际上我尝试过powershell ise)。 没有其他进程可以附加到。 有任何想法吗? 一旦exception(这是我的例外,所以这应该发生)出现在VS中,但我无法重现它。

从C#调用Powershell函数

我有一个PS1文件,其中包含多个Powershell函数。 我需要创建一个静态DLL,读取内存中的所有函数及其定义。 然后,当用户调用DLL并传入函数名称以及函数的参数时,它会调用其中一个函数。 我的问题是,是否可以这样做。 即调用已读取并存储在内存中的函数? 谢谢

提供.NET方法作为委托回调

将.NET方法作为代理回调传递给PowerShell中的.NET对象的语法是什么? 例如: C#: public class Class1 { public static void MyMethod(Action obj) { obj(“Hey!”); } } public class Class2 { public static void Callback(object obj) { Console.Writeline(obj.ToString()); } } 电源shell: [Class1]::MyMethod([Class2]::Callback) 这不起作用。