从 C# 调用 powershell cmdlet

2023-12-21

我正在尝试学习如何从 C# 调用 PS cmdlet,并且遇到了 PowerShell 类。它对于基本使用来说工作得很好,但现在我想执行这个 PS 命令:

Get-ChildItem | where {$_.Length -gt 1000000}

我尝试通过 powershell 类构建它,但我似乎无法做到这一点。到目前为止,这是我的代码:

PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-ChildItem");
ps.AddCommand("where-object");
ps.AddParameter("Length");
ps.AddParameter("-gt");
ps.AddParameter("10000");


// Call the PowerShell.Invoke() method to run the 
// commands of the pipeline.
foreach (PSObject result in ps.Invoke())
{
    Console.WriteLine(
        "{0,-24}{1}",
        result.Members["Length"].Value,
        result.Members["Name"].Value);
} // End foreach.

当我运行这个时,我总是遇到异常。是否可以像这样运行Where-Object cmdlet?


Length, -gt and 10000不是参数Where-Object。只有一个参数,FilterScript在位置 0,值为 typeScriptBlock其中包含一个表达.

PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-ChildItem");
ps.AddCommand("where-object");
ScriptBlock filter = ScriptBlock.Create("$_.Length -gt 10000")
ps.AddParameter("FilterScript", filter)

如果您有需要分解的更复杂的语句,请考虑使用分词器(v2 或更高版本中提供)来更好地理解结构:

    # use single quotes to allow $_ inside string
PS> $script = 'Get-ChildItem | where-object -filter {$_.Length -gt 1000000 }'
PS> $parser = [System.Management.Automation.PSParser]
PS> $parser::Tokenize($script, [ref]$null) | select content, type | ft -auto

这会转储以下信息。它不像 v3 中的 AST 解析器那么丰富,但仍然很有用:



    Content                   Type
    -------                   ----
    Get-ChildItem          Command
    |                     Operator
    where-object           Command
    -filter       CommandParameter
    {                   GroupStart
    _                     Variable
    .                     Operator
    Length                  Member
    -gt                   Operator
    1000000                 Number
    }                     GroupEnd
  

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 C# 调用 powershell cmdlet 的相关文章

随机推荐

  • 将所有 java swing gui 放在一个类中是否正常?

    我刚刚开始进行摇摆开发并且遇到了问题 将整个 GUI 放入一个类中正常吗 我正在构建的应用程序有一个显示多个不同 页面 的 JFrame 例如 如果用户单击按钮 他们将被带到具有不同布局的完全不同的页面 我已经配置了卡片布局 并且到目前为止
  • 如何从表格中显示最大值、最小值、中位数和平均值

    这张图上 就是user id 右边是每个用户的交易频率 如何显示该用户交易频率的最小值 最大值 中值和平均值 对于此类问题我需要进行什么计算 所以会出现中值最大最小值和平均值 检查这篇文章关于窗口函数 https help tableau
  • Web 应用程序的中央错误日志记录服务

    我即将启动一个新网站 我正在使用 Pingdom 来跟踪该网站的正常运行时间 但我感兴趣的是在一个中心位置记录该网站生成的任何错误 我想将代码放入顶级异常处理程序中 该处理程序将打包异常并将其发送到另一个应用程序 然后该应用程序会生成一封电
  • guava 是否有一个采用自定义哈希/等于函数的 Map 实现?

    任何人都知道Guava是否有与Functionaljava等效的版本HashMap http functionaljava googlecode com svn artifacts 3 0 javadoc fj data HashMap h
  • 有条件地在分类列中创建“其他”类别

    我有一个DataFrame df用一列 category使用以下代码创建 import pandas as pd import random as rand from string import ascii uppercase rand s
  • C 结构不扫描所有输入

    我有这个C代码 include stdio h main struct books char name 100 author 100 int year copies book1 book2 printf Enter details of f
  • Python try- except 块的 DRY 方法?

    客观的 我有几行代码 每行代码都能够产生相同类型的错误 并保证相同类型的响应 如何防止 try except 块出现 不要重复 问题 背景 我使用 ReGex 从文本文件中抓取格式不良的数据 并将其输入到自定义对象的字段中 该代码工作得很好
  • Laravel Ajax 下拉过滤器

    我正在尝试使用 Ajax 制作一个过滤器 我想在下拉列表中选择的类别发生变化时显示图像 现在 我正在视图中显示所有图像 并且我想要进行 Ajax 调用 返回过滤后的 images 数组以在视图中显示 但我被困住了 我不知道如何从控制器正确返
  • Pandas 交叉表矩阵 dot nansum

    我正在寻求帮助 使用类似 np nansum 的函数从现有数据帧创建子数据帧 我想将此表转换为非空列和的矩阵 dan ste bob t1 na 2 na t2 2 na 1 t3 2 1 na t4 1 na 2 t5 na 1 2 t6
  • 如何查找(并可能删除)个人文件

    Slack API 有一个方法files list 但这似乎只列出在公共频道上共享的文件 而不是在私人对话中共享的文件 作为团队管理员 我想删除旧文件 我不需要查看它们 我可以要求团队成员手动删除它们 但这对他们来说是一个非常缓慢且费力的过
  • 比较修订版本时 SVN 访问被拒绝

    我们正在使用 SVN 存储库 当我们尝试将本地未修改的文件与存储库中文件的最新版本进行比较时 我收到以下错误 换句话说 有人签入了更改 如果我更新 我将得到他们的更改 但首先我想看看他们的更改是什么 不要认为这很重要 但我们正在使用 Xco
  • 在 Windows 中的 django 中设置 cron 作业

    我想设置cronjob in my Django项目 但我正在使用windows 我试过django cron 但它不适用于windows 我该如何使用cronjob在我的项目中安排时间 使用django cron则不然 不能在Window
  • 下拉列表对齐问题(HTML/CSS)

    我以前问过这样的问题 但我使用的代码与上次不同 我正在尝试创建一个下拉菜单 主列表中的某些元素有一个下拉列表 新闻和团队 由于某种原因 它们移到了右侧 我希望下拉列表中的项目与其父项对齐 任何帮助 将不胜感激 Thanks http cod
  • @DataJpaTest 中的存储库初始化为 null

    我正在尝试在 Spring Boot 应用程序中为存储库编写一些测试 但是存储库自动连接为null 测试类的代码如下 package jpa project repo import org junit Assert import org j
  • Ember.ArrayProxy 更改不触发车把 #each 更新

    我怀疑有一种方法可以更新 Ember Array 代理来触发 ember 的通知 但我不知道如何实现 我正在覆盖 内容 属性来更新数组 数组会更新 但视图不会更新 App items Ember ArrayProxy create cont
  • Python:更改 json 解码的列表类型

    在 Python 2 7 中我可以使用object pairs hook在内置 json 模块中更改解码对象的类型 有没有办法对列表做同样的事情 一种选择是遍历作为钩子参数获得的对象 并将它们替换为我自己的列表类型 但是还有其他更聪明的方法
  • 传入通知的增强意图服务警告

    收到通知后 我的日志中出现两个错误 EnhancedIntentService Service took too long to process intent com google android c2dm intent RECEIVE A
  • iOS 15 通讯通知图片未显示

    我一直在尝试将我的 本地和推送 通知更新为通信通知 当用户收到来自其朋友之一的通信事件时 我希望显示的通知包含该朋友的个人资料图片 就像新的 iMessage 应用程序一样 观看专门的 WWDC2021 会议后 我向我的 SwiftUI 应
  • 为什么不调用复制构造函数?

    在此代码中 include
  • 从 C# 调用 powershell cmdlet

    我正在尝试学习如何从 C 调用 PS cmdlet 并且遇到了 PowerShell 类 它对于基本使用来说工作得很好 但现在我想执行这个 PS 命令 Get ChildItem where Length gt 1000000 我尝试通过