Powershell:将 pracl 命令的输出通过管道传输到数组

2023-12-06

pracl 是一个 sysinternal 命令,可用于列出目录的 ACL。我有一个共享列表,我想创建一个 csv 文件,这样对于每个 ACL 条目,我希望共享路径位于一列中,共享权限位于下一列中。我试图通过使用以下代码来做到这一点

$inputfile = "share.txt"

$outputFile = "out.csv"

foreach( $path in Get-Content $inputfile)

{

$results=.\pracl.exe $path

      {

foreach ($result in $results) {write-host $path,$line}



      }

$objResult = [pscustomobject]@{

Path = $Path

Permission = $line

}

$outputArray += $objResult

    $objresult

}

$outputArray | Export-Csv -Path $outputfile -NoTypeInformation

它失败并出现以下错误:-

Method invocation failed because [System.Management.Automation.PSObject] does not contain a method named 'op_Addition'.

At C:\Users\re07393\1\sample.ps1:14 char:1

+ $outputArray += $objResult

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : InvalidOperation: (op_Addition:String) [], RuntimeException

    + FullyQualifiedErrorId : MethodNotFound

有什么建议 ?


您正在尝试创建一个array of [pscustomobject]在你的$outputArray多变的迭代地,使用+=, but 你不初始化 $outputArray作为数组- 有关结果行为的解释,请参阅底部部分。

因此,解决您问题的直接方法就是这样做:

# Do this before your `foreach` loop, then `+=` will work for appending elements.
$outputArray = @()

然而,using +=添加到数组效率低下,因为实际上一个new每次都必须创建数组实例,因为数组是不可变的数据结构。也就是说,每次+=使用时,PowerShell 在幕后创建一个新的数组实例,现有元素以及新元素都会复制到该实例。

一个更简单、更有效的方法是让电源外壳使用以下命令为您创建一个数组foreach循环作为表达并将其分配给一个变量作为一个整体: 也就是说,PowerShell 会自动收集循环每次迭代中的输出:

一个简化的例子:

# Create an array of 10 custom objects
[array] $outputArray = foreach ($i in 1..10) {
   # Create and implicitly output a custom object in each iteration.
   [pscustomobject] @{
     Number = $i
   }
}

注意类型约束的使用[array]到左侧$outputArray,这确保了变量值是always一个数组,即使循环恰好产生one输出对象(在这种情况下,PowerShell 将仅存储该对象本身,而不是将其包装在数组中)。

注意你可以类似地使用for, if, do / while / switch作为表达式的语句.

然而,在所有情况下,这些语句只能充当表达式通过他们自己;遗憾的是,使用它们作为管道的第一段 or 将它们嵌入到更大的表达式中 does not工作见GitHub 问题 #6817.


As for 你尝试过什么:

$outputArray += $objResult

因为你没有初始化$outputArray在循环之前,变量在循环中隐式创建first迭代:

如果 LHS 变量尚不存在,+=实际上等同于=:也就是说,RHS 按原样存储在 LHS 变量中,因此$outputArray现在包含一个[pscustomobject]实例。

In the second迭代,因为$outputArray现在有一个值,+=现在尝试执行适合类型的操作+操作(例如数字的数字加法和字符串的连接),但没有+ (op_Addition()) 操作是为类型定义的[pscustomobject],所以运算fails以及您看到的错误消息。

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

Powershell:将 pracl 命令的输出通过管道传输到数组 的相关文章

  • 检测 PowerShell 开关

    我正在用 C 开发 PowerShell cmdlet 并且有 true false switch 语句 我注意到 如果我希望 bool 为 true 我需要指定 SwitchName true 否则我会得到 Missing an argu
  • 有没有更快的方法来使用Powershell解析Excel文档?

    我正在与一个接口MS Excel文件通过Powershell 每个 Excel 文档可能有大约 1000 行数据 目前这个脚本似乎读取了Excel文件并以每 0 6 秒 1 条记录的速率将值写入屏幕 乍一看 这似乎非常慢 这是我第一次阅读E
  • 使用 powershell 获取短路径

    我正在尝试在 powershell 中使用以下代码来获取短路径 对于某些文件夹它有效 对于某些人来说它不起作用 a New Object ComObject Scripting FileSystemObject f a GetFile C
  • 从 Laravel 4 输入生成新数组

    我使用 Input all 从动态生成的表单中获取一些输入 我使用 jQuery 来允许用户添加字段 字段名称为 first names last names 和 emails input 变量现在看起来像这样 array size 4 t
  • 在 PowerShell 中从文件名中删除路径和扩展名

    我有一系列字符串 它们是文件的完整路径 我想只保存文件名 不保存文件扩展名和主路径 所以由此可知 c temp myfile txt to myfile 我实际上并没有遍历目录 在这种情况下类似于 PowerShell 的目录basenam
  • Powershell:输出文件

    我正在尝试将所有控制台输出记录到文件中 移动项目 D scripts fileA D scripts fileB verbose Force 输出文件 D scripts move log 追加 如果该文件不存在 则正在创建该文件 但详细信
  • 最好的 php DOM 2 数组函数是什么?

    我想解析xml文件 到目前为止 我发现最好的方法是使用 DOMDocument 类 示例 xml 字符串
  • 将数组的每个元素解析为整数

    我有一个字符串 需要将其拆分为一个数组 然后对数组的每个元素执行数学函数 目前我正在做这样的事情 实际上 我什么也没做 但这是一个非常简单的例子来解释我的问题 var stringBits theString split var resul
  • 使用 tar 压缩带有密码的文件 tar.gz [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 I use tar czf test tar gz test 压缩test文件夹到test tar gz 现在 我想压缩为test tar
  • 如何处理“不符合”的数组?

    如何对两个数组进行逐元素算术运算 在第一维度中一致 但也有一个额外的维度 示例 乘法数组a 3 x 3 x 2 按数组b 3 x 3 a lt array 1 18 dim c 3 3 2 b lt diag 3 由于数组不一致 因此以下操
  • C++ 通过引用传递动态分配的二维数组

    这个问题是基于之前提出的问题而提出的 通过已知大小的引用多维数组传递 https stackoverflow com questions 529109 c pass by reference multidimensional array w
  • PowerShell v4 中的本机内存泄漏?

    我安装的 PS v4 似乎存在泄漏 CLR版本 4 0 30319 34209构建版本 6 3 9600 17400 我运行以下命令 内存快速无限增长 while true New Object System Object 如果我跳出循环并
  • 使用 Arrays.copyOf 复制不同类型的数组时出现问题

    我正在尝试创建一个方法 该方法几乎将任何内容作为参数 并返回带有某些分隔符的值的串联字符串表示形式 public static String getConcatenated char delim Object names String st
  • 如果未提供值,如何从 cmdlet 中省略 powershell 参数?

    我正在尝试执行下面的 Powershell 命令 在交换服务器上创建一个新的地址列表 其中包含名称 容器等参数 Container是可选输入 参数 如果未提供其值 如何从 cmdlet 中省略它 我尝试过IF有条件但但似乎不起作用 这里有什
  • 如何使用现有列表创建二维数组?

    例如 我有一个名为 mazeline 的 txt 数据 如下所示 abcd cdae korp 所以我首先列出了 3 个清单 mazeline readmaze split mline0 list mazeline 0 mline1 lis
  • Java 泛型从类创建数组

    我有一个层次结构 其中正方形 三角形和圆形都从形状延伸 我有一个工作方法 public void someMethod File file new File File with squares ThirdPartyClass foo new
  • python - 如何使用for循环重新分配数组中的元素

    我有一个 numpy 浮点数组 我想使用 for 循环重新分配不同的值 但 PyCharm 表示未使用新的变量分配 如果我有 请说 for i in array i i 5 它会说 i 是一个未使用的变量 我究竟做错了什么 您需要为数组元素
  • Microsoft Teams 中私人消息的传入 Webhook

    我可以从 C 应用程序或 PS 脚本创建传入 Webhook 将 JSON 消息发送到 MSFT 文档所解释的通道 但是 我想使用传入的 webhook 将 JSON 消息从我的应用程序发送到用户 作为私人消息 就像 Slack 允许的那样
  • 递归获取数组的键并创建下划线分隔的字符串

    现在我得到了一个包含某种信息的数组 我需要从中创建一个表 例如 Student Address StreetAddress gt Some Street StreetName gt Some Name Marks1 gt 100 Marks
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字

随机推荐

  • SCSS 地图无法在 Compass 中编译[重复]

    这个问题在这里已经有答案了 我写了一个 SCSS 映射变量和一个 each循环为文件下载链接分配不同的图标 如下所示 file icons application vnd ms excel images ico excel png appl
  • 无法读取未定义 vue 的属性“post”

    感谢您阅读我的问题 我已阅读有关我的问题的信息 VUE JS 2 WEBPACK 无法读取未定义 VUE 资源的属性 get 但我的系统没有读取 Vue var 我有一个 vue 组件调用 app vue 我需要使用 vue resourc
  • 如何获取大 LinkedIn 图片共享格式

    我正在使用 linkedin api 在 linkedin 上分享帖子 如下所示 How to get make post like this through api 我正在尝试帖子正文的所有组合 但无法发布如上所述的内容 comment
  • 在 Ionic 4 应用程序中进行的 API 调用无法在 Android 设备上运行

    我可以使用以下命令在笔记本电脑上运行我的离子应用程序ionic lab命令 该应用程序调用 IMDB api 并显示从中检索到的数据 现在 我正在尝试在 Android 设备上运行该应用程序 使用以下命令 ionic cordova run
  • macOS Mojave 版本 10.14.1 bash-3.2 expr:语法错误

    我遇到这样的错误 expr syntax error 我的脚本是 bin bash echo expr index sarasara a 如何修复它 man expr最后给出这个 根据 POSIX 标准 使用字符串参数length subs
  • 我可以使用 allocate 来复制对象的对象吗?

    我有一个从 TPersistent 三级继承的对象 我想使用Assign程序 MyFirstObj GrandSonOfPersistent Create I modify the objects inside MyFirstObj MyS
  • 如何使用GridBagConstraints创建布局?

    我想像这样布局我的 JPane 这样 顶部部分比底部部分更大 更高 顶部部分由另一个 JPanel 组成 并使用 Graphics 对象来显示图像 而底部部分也由另一个 JPanel 组成 但使用 Graphics 对象来绘制一些线条和文字
  • sqlite是否缓存查询结果以进行优化?

    我在 sqlite 中注意到了这种行为 当我重新使用游标对象时 任务管理器中的工作集内存不断增加 直到我的程序抛出内存不足异常 我重构了代码 以便每次查询时我都会打开一个到 sqlite 文件的连接 查询我想要的内容 然后关闭连接 后者似乎
  • 如何从 Wix 安装程序将自签名 SSL 证书安装到商店中?

    我找不到任何有关如何针对当前版本的 Wix Toolset 3 11 1 2318 执行此操作的文档 鉴于我有一个cert cer文件在我的SourceDir and INSTALLDIR如何在安装时将其放入 Windows 受信任的根证书
  • 无法读取 dotnet core 中链接的 appsettings.json 文件中的值

    在一个 aspnetcore 2 0 项目中 我尝试在我的 Web 应用程序和几个 xunit 测试项目中设置一个共享的 appsettings json 文件 首先 当我 定期 将 appsettings json 单独添加到我的项目中时
  • 定期 JobScheduler 不尊重约束

    使用JobScheduler 我设置了一个简单的JobService如下 TargetApi 21 public class SimpleJobService extends JobService private static final
  • wxpython菜单栏不显示

    我正在尝试使用 wxpython for gui 编写一个时间表程序 并使用 wxpython wiki 上的入门教程来加快 wxpython 的速度 但是当我尝试向 wxFrame 添加菜单栏时 菜单栏不显示 有什么想法为什么会发生这种情
  • 如何在 Intel 环形和网状架构上选择引导处理器 (BSP)

    第2 13 2节提到仲裁 ID 用于确定哪个处理器首先发出无操作周期 我在多个来源和英特尔手册上看到了这一点 引用 MP 初始化序列的英特尔手册仅在存在 系统总线 时以及在此之前最初存在 APIC 总线 时解决 Pentium 4 我的印象
  • 在 iOS (Flutter) 中使用 Firebase 和 Geolocator(或任何 Swift 插件)构建错误

    我正在尝试创建一个使用 Firebase 和 Geolocator 插件的 flutter 应用程序 我将使用的 Firebase 插件认证 使用RTDB and FCM The 地理定位器显然是一个非常可靠的位置感知插件 在 Androi
  • 如何在 Windows 上通过内置命令使用 subprocess.Popen

    在我的旧 python 脚本中 我使用以下代码来显示 Windows cmd 命令的结果 print os popen dir c read 正如 python 2 7 文档所说os popen已经过时并且subprocess被推荐 我按照
  • 实例成员“view”不能在类型“GameScene”上使用

    我最近更新到 Xcode 7 Beta 现在收到一条错误消息 实例成员 视图 无法在第 5 行的 GameScene 类型上使用 有人知道如何解决此问题吗 另外 如果您想提供额外帮助 请参阅我的另一个问题 ConvertPointToVie
  • 在智能卡上上传 .cap 文件?

    我有一张新卡 其 ATR 代码如下 3B 68 00 00 00 73 C8 40 12 00 90 00 我在谷歌上搜索了这张ATR 最后我知道这是一张 巴西电子公积金卡 问题是我该如何使用这张卡 我的意思是它支持哪些 APDU 有它的数
  • PHP - 使用表单输入中的 id 制作 switch 语句

    我正在用 PHP 做一个简短的测验 根据 4 个是 否问题告诉你你想到的生物是什么 我这样做是为了根据您对每个问题的回答 您会遇到不同的问题 我主要使用 switch 语句来完成此操作 我的问题是有什么方法可以使用条件作为表单提交按钮的 i
  • Flutter 蓝牙热敏打印机集成

    我有一个 flutter 食品配送应用程序 除此之外 我还有一个单独的餐厅应用程序 我可以在其中接受和拒绝订单 我很长一段时间以来一直在尝试做一些事情 以便当餐厅接受订单时 蓝牙热敏打印机会自动打印出一张收据 我找到了很多代码 但我不明白如
  • Powershell:将 pracl 命令的输出通过管道传输到数组

    pracl 是一个 sysinternal 命令 可用于列出目录的 ACL 我有一个共享列表 我想创建一个 csv 文件 这样对于每个 ACL 条目 我希望共享路径位于一列中 共享权限位于下一列中 我试图通过使用以下代码来做到这一点 inp