Tag: powershell

Microsoft Teams中私人消息的传入Webhook

我可以从C#app或PS Script创建一个传入的webhook,向MSFT doc解释的频道发送JSON消息。 但是,我想使用我的传入webhook从我的应用程序向用户发送JSON消息(如私人消息),如Slack允许。 据我所知,MSFT团队无法做到这一点: https : //dev.outlook.com/Connectors/Reference 但也许你知道任何解决方法或类似的东西来解决它。 提前致谢 :) [EDITED]用于通过C#App将消息发布到MSFT团队的代码: //Post a message using simple strings public void PostMessage(string text, string title) { Payload payload = new Payload() { Title = title Text = test }; PostMessage(payload); } //Post a message using a Payload object public async void PostMessage(Payload payload) { string payloadJson […]

在Web应用程序中通过C#调用Powershell – 应用程序池标识问题

我已经编写了一些东西来通过C#使用RunspaceFactory执行Powershell。 我正在加载默认的Powershell配置文件,如下所示: Runspace runspace = RunspaceFactory.CreateRunspace(); runspace.Open(); string scriptText = @”. .\” + scriptFileName + “; ” + command; Pipeline pipeline = runspace.CreatePipeline(scriptText); Command =我所知道的配置文件中的一个函数。 所有这些Powershell的东西都包含在Impersonator中。 为避免疑义,$ profile = C:\ Users \ Administrator \ Documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1 这是在IIS 7.5下运行的Web应用程序 如果我的IIS应用程序在“管理员”帐户下运行,它就可以运行。 在任何其他帐户下,它会抛出错误: “术语’。\ Microsoft.PowerShell_profile.ps1’未被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请validation路径是否为纠正,然后再试一次。“ 当我冒充“管理员”帐户时,我认为该位置是正确的。 一些使用调用的“获取位置”的日志记录报告该目录应该是什么。 出于血腥的心态,我试图强迫它: System.Environment.CurrentDirectory = dir; ……还试图调用“设置位置”。 这些工作,但如果我从一个运行空间调用’get-location’它报告与以前相同的目录(正确的目录)。 我认为,也许,模拟可能存在问题,所以我写了一些测试,以应用程序池不应该做的方式触摸文件系统。 这些工作。 […]

Powershell脚本删除旧文件

以下脚本将删除指定目录中超过14天的文件并写入.txt并删除路径并删除文件(在另一个论坛上找到此脚本…信号为shay): dir c:\tmp -recurse | where {!$_.PsIsContainer -AND $_.lastWriteTime -lt (Get-Date).AddDays(-14) } | select LastWriteTime,@{n=”Path”;e={convert-path $_.PSPath}} | tee c:\oldFiles.txt | Remove-Item -force -whatif 我有3个问题: 什么是-lt什么是-le什么是-gt ? 我什么时候才能使用每一个 上面的脚本只删除文件…我怎么能删除文件夹? 上面的脚本基于LastWriteTime ..那么CreatedDate或LastAccessed时间呢?

如何解密通过PowerShell加密的C#中的字符串

是否有可能解密通过PowerShell加密的C#中的字符串以及如何? 该字符串通过PowerShell加密,如下所示: $pw = read-host “Enter Password” –AsSecureString ConvertFrom-SecureString $pw | out-file “C:\file.txt” 要使用PowerShell将其转换回来,我可以使用这些调用C#类System.Runtime.InteropServices.Marshal命令。 $pwdSec = Get-Content “C:\file.txt” | ConvertTo-SecureString $bPswd = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pwdSec) $pswd = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bPswd) File包含已转换为加密标准string(“hello”) 。 因此,如果打开file.txt文件,它看起来类似于: 01000000d08c9ddf0115d1118c7a00c04fc297eb0100000052ded6c2db80e748933432e19b9de8b10000 000002000000000003660000c00000001000000016dc35885d76d07bab289eb9927cfc1e000000000480 0000a0000000100000003106cde553f45b08d13d89d11336170b280000005cc865c1ee1b57e84ed3d1a2 d3f2d0ec0f189b532e61c18d1f31444d6f119a1e8368477fd2d81f54140000000cb0262e58b08ae14f37 22c14c69684841b6b21c

如何动态引用查找另一个程序集的程序集?

为这个狡猾的问题道歉 – 如果有人有更好的建议,我很乐意改写。 我正在尝试通过动态调用属于另一个应用程序的程序集来创建一个对象。 以下PowerShell代码对我很有用: [Reflection.Assembly]::LoadFrom(“C:\Program Files\Vendor\Product\ProductAPI.dll”) $bobject = new-object ProductAPI.BasicObject $bobject.AddName(“Some Name”) 我在C#中努力做同样的事情。 根据StackOverflow上的其他post,我目前有这个: System.Reflection.Assembly myDllAssembly = System.Reflection.Assembly.LoadFile(“C:\\Program Files\\Vendor\\Product\\ProductAPI.dll”); System.Type BasicObjectType = myDllAssembly.GetType(“ProductAPI.BasicObject”); var basicObjectInstance = Activator.CreateInstance(BasicObjectType); 最后一行导致TargetInvocationException。 {“无法加载文件或程序集’AnotherObject,Version = 1.2.345.0,Culture = neutral,PublicKeyToken = null’或其依赖项之一。系统找不到指定的文件。” 看起来BasicObject构造函数试图调用AnotherObject(来自同一文件夹中的AnotherObject.dll)但找不到它。 关于如何解决这个问题的任何提示?

Powershell输出格式

我正在使用C#开发一个Powershell Cmdlet,我想知道是否有一种方法可以控制我在Cmdlet本身写入Powershell的对象的格式。 基本上,我有太多属性的对象可以在屏幕上轻松显示,我的Cmdlet使用WriteObject()将它们发送到Powershell 我希望我的cmdlet用户能够运行它们,并在Powershell控制台中读取返回的数据,就像使用命令提示符一样。 不幸的是,Powershell尝试在列中填充的属性数量意味着大多数都被截断了,当我添加更多时,它会给每个属性提供自己的行,这更糟糕。 我已经看到了允许用户正确格式化数据的东西,但没有任何东西允许开发人员设置默认值。 基本上我想要的是类似于属性我可以应用于被泵送到Powershell的对象的每个属性,它告诉Powershell是否显示每个属性(假设用户没有设置其他格式化选项)。 (我试过把它们变成公共字段而不是属性,而Powershell仍然会显示它们)

在PowerShell v2中编译新类型 – Cookie Aware WebClient

我正在尝试编译WebClient类的“ cookie aware ”版本 – 但我似乎无法克服使用PowerShell v2中添加的Add-Type cmdlet的一些障碍。 这是我试图编译的代码: PS C:\> $def = @” public class CookieAwareWebClient : System.Net.WebClient { private System.Net.CookieContainer m_container = new System.Net.CookieContainer(); protected override System.Net.WebRequest GetWebRequest(System.Uri address) { System.Net.WebRequest request = base.GetWebRequest(address); if (request is System.Net.HttpWebRequest) { (request as System.Net.HttpWebRequest).CookieContainer = m_container; } return request; } } “@ PS C:\> Add-Type […]

如何调用我的DLL并在powershell脚本中使用它

我有自己的dll用c#编写。 现在我想从我的powershell脚本中调用它。 我做了以下事情; [System.Reflection.Assembly]::LoadFile(“E:\MyClass.dll”) $MyCompObj = New-Object MyClass.Student 但是当我执行它时,它给了我错误 找不到构造函数。 找不到类型MyClass.Student的适当构造函数 我是否采取了错误的方式来做到这一点? 请帮我解决这个问题。

在C#中编写批处理脚本的好方法是什么?

我想用C#编写简单的脚本。 我通常会使用.bat或4NT .btm文件。 复制文件,解析文本,询问用户输入等。 相当简单,但在批处理文件中执行此操作非常困难(例如,没有例外)。 我熟悉像AxScript这样的命令行“脚本”包装器,这样我就可以使用它。 我缺少的是简单的文件操作框架。 我希望能够做cd(“..”),copy(srcFile,destFile)类型的function。 我试过的工具: NANT,我们在构建过程中使用它。 不是一个好的脚本工具。 疯狂冗长的XML语法并添加一个简单的函数,您必须编写扩展程序集。 不能内联。 电源shell。 看起来很棒,但我只是无法切换到我的主要shell。 与4NT有太多不同。 无论我做什么都需要从普通的命令提示符运行而不需要特殊的shell来运行它。 PowerShell可以用作脚本执行程序吗? 的Perl / Python的/ruby。 真的讨厌学习一种全新的语言和框架来进行批处理文件操作。 我没有能够把时间花在我需要的时间上。 另外,我们的工具链是99%的.NET商店,我真的想利用我们现有的经验和代码库。 是否有那些试图解决你用过的“在C#中制作批处理文件”问题的框架? 我希望C#/ .NET的强大function具有典型cmd.exe shell语言的立即模式类型function。 我一个人想要这样的东西吗?

如何使用PowerShell使用C#DLL中存在的类的New-Object

例如,我在C#中有一个class级 public class MyComputer : PSObject { public string UserName { get { return userName; } set { userName = value; } } private string userName; public string DeviceName { get { return deviceName; } set { deviceName = value; } } public string deviceName; } 它来自PSObject。 我正在使用import-module在powershell中加载具有此代码的DLL。 然后我尝试在PowerShell中创建MyComputer类的新对象。 PS C:> $ MyCompObj = New-Object […]