Tag: powershell

使用Powershell以编程方式清除回收站

我必须做的最困难的事情之一是使用PowerShell访问Windows API。 我想使用Shell32.dll中的API擦除回收站。 还有其他方法,但它们通常绕过正常的Windows进程,在这种情况下,我想以“正确”的方式做到这一点。

ASP.Net应用程序将powershell脚本作为IIS_USR执行

我正在构建一个asp.net mvc应用程序,它将作为我们为管理日常任务而编写的许多PowerShell脚本的包装器(最终目标是让非技术人员轻松使用脚本) 。 我设法让脚本执行得很好: var ctx = System.Web.HttpContext.Current; var file = ctx.Server.MapPath(“~/Content/Powershell/psStoreLive.ps1”); #activate a store var shell = PowerShell.Create(); shell.AddCommand(file); shell.AddArgument(o.DBName); # which store should we activate var results = shell.Invoke(); # and then process the results….display output of script 问题是脚本正在以IIS_USR(或类似)的forms执行。 我需要找到一种方法让IIS服务器以当前登录用户的身份执行脚本(使用Windows身份validation( ))。 我已经看过http://stackoverflow.com/questions/10837377/loginview-and-passing-credentials-to-powershell ,虽然看起来它可能会起作用,但我对这个想法并不满意。 在我看来,我应该能够使用一些C#代码执行此操作,就像在上面的代码块中一样,但是我一直无法通过我的搜索来完成任何操作。 如何在C#中创建一个PowerShell环境,该环境将作为登录用户执行(如果需要,我会满足于重新询问凭据) 谢谢 编辑1 我已经查看了PSCredential对象,这似乎是正确的事情,但我仍然无法弄清楚如何将它插入到整个会话中(有关将其用作cmdlet参数的大量信息)需要凭证)

如何通过C#将参数传递给PowerShell

我有问题通过C#传递参数到PowerShell 我收到以下exception: “由于主机程序或命令类型不支持用户交互而提示用户失败的命令。尝试支持用户交互的主机程序,例如Windows PowerShell控制台或Windows PowerShell ISE,并从命令中删除与提示相关的命令不支持用户交互的类型,例如Windows PowerShell工作流“ CS: private static void RunPowershellScript(string scriptFile, string scriptParameters) { string scriptParameters = “param1 param2”; RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); runspace.Open(); RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace); Pipeline pipeline = runspace.CreatePipeline(); Command scriptCommand = new Command(scriptFile); Collection commandParameters = new Collection(); foreach (string scriptParameter in scriptParameters.Split(‘ ‘)) […]

在c#-ConvertToJson错误中运行Powershell脚本

我想在c#中运行power shell脚本。 使用关于在CodeProject的c#中运行powershell脚本的教程( http://www.codeproject.com/Articles/18229/How-to-run-PowerShell-scripts-from-C ) 我能够运行’大多数’ps脚本(它们在PS中运行完美),但是我需要的那个,在尝试使用-Co​​nvertFrom-Json命令时收到错误。 脚本错误:术语“ConvertFrom-Json”未被识别为cmdlet,函数,脚本文件或可操作程序的名称。 检查名称的拼写,或者如果包含路径,请validation路径是否正确,然后重试。 我是新手,所以不确定它的过时库或其他依赖项是否有用?

2.0版的System.Management.Automation?

是否有2.0(或更高版本)的System.Management.Automation程序集? 我在看C#中的PowerShell类,它说这个类是在PowerShell 2.0中引入的。 当我在Visual Studio中添加对程序集的引用时,该版本号是否与我看到的版本号相对应? 这是我的另一个问题的另一个问题 ,即在解决该PowerShell集内的PowerShell类时遇到问题。 我在GAC中尝试过System.Management.Automation程序集: C:\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35 和Reference Assemblies : C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0 两个包含文件夹的版本仅为1.0 我安装了PowerShell 2.0。

在Powershell Cmdlet调用之间保持状态的最佳实践是什么?

我是Powershell开发的完全新手,我正在尝试用C#编写一个Powershell Cmdlet,它将用作REST API的接口。 我想有一些设置Cmdlet,用户将被提示输入REST API的Uri,用户名和密码,然后调用Cmldlets,如Get-Item,而不必输入这些参数。 非常类似于Powershell的Azure提供程序,您可以通过调用Select-AzureSubscription设置当前订阅,然后再调用Save-AzureVhd而无需再输入订阅名称。 在不同Cmdlet的调用之间保持状态的最佳实践是什么? 编辑:我不确定这是解决它的最佳方法,但我所做的是我添加了一个持有状态的单例类。 我有一个Cmdlet,Select-Project -Name MyProject,它在我的单例类中设置一个公共属性,然后我的其他Cmdlet可以访问该属性。

在PowerShell中使用XAML / WPF,如何填充列表框?

我在这里找到了许多很棒的主题,但似乎无法追查我的答案。 我正在使用Visual Studio制作GUI并将XAML复制/粘贴到PowerShell中。 我知道我应该在c#中这样做,但是因为我的知识还没有,所以对我来说它是纯粹的PowerShell。 所以我已经制作了我的GUI,但我似乎无法填充我的数据字段。 做其他事情,如文本框是可以解决的,但我似乎无法让这个listview /数据网格填充值。 此时,已删除与Azure的连接,直到我可以解决将此项添加到列表框的问题。 XAML绘制我的表单 [void][System.Reflection.Assembly]::LoadWithPartialName(‘presentationframework’) [xml]$XAML = @’ ‘@ 将XAML加载到内存/制作对象中 #Read XAML $reader=(New-Object System.Xml.XmlNodeReader $xaml) try{$Form=[Windows.Markup.XamlReader]::Load( $reader )} catch{Write-Host “Unable to load Windows.Markup.XamlReader. Some possible causes for this problem include: .NET Framework is missing PowerShell must be launched with PowerShell -sta, invalid XAML code was encountered.”} #=========================================================================== # Store Form […]

Power shell:Import-Module

我一直试图在win2008标准服务器上使用app fabric缓存。 当我执行follwowing命令时,我得到:Import-Module DistributedCacheAdministration Import-Module:未加载指定的模块“DistributedCacheAdministration”,因为在任何模块目录中找不到有效的模块文件。 该目录位于何处,如何使用该模块 此外,似乎我有PowerShell 1.我似乎无法安装PowerShell 2

有可能伪造windows console api吗?

我已经在c#中编写了一个ssh服务器,我认为将PowerShell作为shell连接是很好的。 我已经尝试了两种方法来使其正常工作,但两者都远非完美。 这是我尝试过的: 启动powershell.exe并重定向它的std(in / out)。 这不能很好地工作,因为powershell.exe检测到它被重定向,改变它的行为。 更重要的是,它期望输入数据在stdid而不是命令上。 所以它使用控制台api来读取命令。 在“包装器”应用程序中托管powershell。 这具有能够向powershell提供“控制台”实现的优点(通过PSHostRawUserInterface)。 这样做效果更好,但您仍然可以调用命令(主要是真正的控制台应用程序),例如“… | more”,希望能够使用控制台api,然后尝试从包装器进程的控制台读取。 所以我想做的是有一组函数替换控制台应用程序使用的常规控制台输入/输出函数,所以我可以处理它们。 但这似乎相当激烈,以至于成为一个糟糕的设计理念(imo)。 现在我的想法是通过发送具有本机/ Pinvoke函数(如WriteConsoleInput)的相关键来操作控制台。 我认为有可能以这种方式伪造控制台。 但我不知道如何“读取”控制台上发生的事情。 还要记住,它是一个服务,所以最好它不应该产生一个真正的控制台窗口,尽管可能在Windows会话0中不会显示并且无关紧要。

关于NTFS重新分析点(符号链接/目录连接)的路径规范化?

不幸的是,我在Windows上,我需要POSIX realpath 。 假设CMD批处理脚本中有一个dirpath变量: FOODIR=D:/tmp/foo/bar/quux 其中一个或多个dirpath的中间组件是符号链接 (Microsoft用语中的目录连接 ): [/cygdrive/d/tmp]$ cmd /C dir /Ad /l … Directory of D:\tmp … 2014-12-10 16:44 foo [D:\storage\foo.canonical] 如何编写一个函数,将%FOODIR%转换为D:/storage/foo.canonical/bar/quux ? 任何解决方案欢迎