如何将 PowerShell 树输出到文本或 Excel 文件

2024-01-22

我有以下代码:

$readPath = "C:\FirstFolder"
$writePath = "C:\SecondFolder"

Function Recurse($folder, $lvl) {

    Get-ChildItem -Path $folder -File | ForEach-Object {
        Write-Host "$("  "*$lvl)> $($_.Name) - $((Get-Acl -Path $_.FullName).Owner)"
    }

    Get-ChildItem -Path $folder -Directory | ForEach-Object {
        Write-Host "$("  "*$lvl)> $($_.Name)"
        Recurse -folder $_.FullName -lvl $($lvl+1)
    }

}

$root = Get-Item -Path $readPath
Recurse -folder $root.FullName -lvl 0

其输出如下:

> File0.xlsx - OwnerB
> Directory1
  >File1.1.txt - OwnerB
  >File1.2.ppt - OwnerA
>Directory2
  >File2.1 - OwnerA
  >File2.2 - OwnerA

当我添加代码时$log | Out-File $writePath\OwnerTree.txt -Encoding UTF8,我的输出文件是空白的。

有人知道如何获得与 PowerShell 中显示的布局相同的输出文件吗?


只是几件事:

  1. 使你的功能output字符串而不是使用Write-Host,其唯一目的是写入控制台屏幕进行显示
  2. 将函数的结果捕获到变量中并将其保存到文件中
  3. 如果您想将两者写入文件并写入控制台,请使用Set-Content代替Out-File,因为它也有一个开关-PassThru
function Get-OwnerTree ([string]$folder, [int]$lvl) {
    Get-ChildItem -Path $folder -File | ForEach-Object {
        "$("  "*$lvl)> $($_.Name) - $((Get-Acl -Path $_.FullName).Owner)"
    }

    Get-ChildItem -Path $folder -Directory | ForEach-Object {
        "$("  "*$lvl)> $($_.Name)"
        Get-OwnerTree -folder $_.FullName -lvl (++$lvl)
    }

}

$root = Get-Item -Path $readPath
$log = Get-OwnerTree -folder $root.FullName -lvl 0

$log | Set-Content -Path "$writePath\OwnerTree.txt" -Encoding UTF8 -PassThru

我还更改了函数名称以符合 PowerShell 的要求动词名词 https://github.com/MicrosoftDocs/PowerShell-Docs/blob/staging/reference/docs-conceptual/developer/cmdlet/approved-verbs-for-windows-powershell-commands.md命名约定

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

如何将 PowerShell 树输出到文本或 Excel 文件 的相关文章

  • 使用 GitHub 包注册表作为 PowerShell 包存储库

    据我所知PowerShell 存储库是 NuGet 存储库 https devblogs microsoft com powershell setting up an internal powershellget repository Gi
  • 尝试从 npm 安装 Angular 2 Material - 源文本中无法识别的标记

    我从 PowerShell 尝试以下命令 以管理员身份 npm install angular2 material 并得到错误 Unrecognized token in source text At line 1 char 13 npm
  • 为什么“Get-ChildItem -File | Get-FileHash”有效?

    我对 Bash 比对 Powershell 更熟悉 有时我对后者的对象模型感到困惑 看着Get FileHash 的文档 https learn microsoft com en us powershell module microsoft
  • 从所有通讯组中删除所有前雇员

    因此 今天我被分配的任务是从所有 DL 中删除域中的所有前员工 他们在 AD 中拥有自己的文件夹 有没有什么方法可以快速做到这一点 或者至少比单独检查每个并转到 gt 的成员删除所有更快 Thanks 编辑以添加更多信息 有 822 个用户
  • Conda 无法在 Powershell 中激活

    我已经在我的 Windows 10 笔记本电脑上安装了 anaconda 我正在尝试激活名为的Python环境pyenv 首先 我检查conda env list在我的笔记本电脑中 这是 powershell 上的输出 PS C Users
  • SNMP 响应被 PowerShell 破坏?

    考虑以下 PowerShell 代码 SNMP New Object COMObject OLEPrn OLESNMP SNMP Open 10 178 230 105 public 2 3000 MACAddress SNMP Get 1
  • Windows Sandbox PowerShell 登录命令窗口不可见

    我正在尝试通过 PowerShell 登录命令使用 Windows Sandbox 这是LogonCommand我的 WSB 文件的部分
  • 如何在 PowerShell 中使用参数执行外部程序?

    我读过这个答案堆栈溢出 https stackoverflow com questions 1673967 how to run exe in powershell with parameters with spaces and quote
  • SMART 硬盘信息 Powershell [重复]

    这个问题在这里已经有答案了 我正在寻找一种通过可能的 powershell 来获取任何给定设备上硬盘驱动器的 SMART 数据的方法 我已经通过 CMD 和 powershell 尝试过 WMI 命令 但无法获得我正在寻找的适当数据 获取
  • Try Catch 在 Powershell 脚本中不起作用

    我似乎无法让这个 try catch 工作 我确信这很简单 但此刻我的大脑太煎熬了 请帮忙 param String RemoteServicesVMs VmThatThrowsError function getWinServiceSta
  • Powershell:启动进程不将参数传递给 cmd.exe

    这些是在 powershell 控制台 Windows 10 中运行的命令 username Username password Password securePassword ConvertTo SecureString password
  • 自动递增 EC2 实例名称

    我在 Stackoverflow 上看到很多问题 询问是否有办法自动递增实例名称 例如 foo1 foo2 fooN 我想看看是否有办法在 Powershell 中执行此操作 我正在使用 AutoLaunchConfiguration AS
  • 在powershell中检查文件是否可读且正常

    我是 powershell 新手 我想检查文件是否可读且正常 在 unix 中 我们可以使用 f 和 r 在一行中完成此操作 例如 以下 shell 脚本函数接受文件名作为参数并检查文件的可读性和规律性 与此等效的 powershell 是
  • 通过 PowerShell 对 TFS 构建进行排队

    TFS2012 具有一个 2010 构建控制器和一个 2010 构建代理 还有一个 2012 构建控制器和多个 2012 构建代理 我们的软件有多个版本的多个版本 构建根据约定命名 例如Foo version 1 0 和 Foo versi
  • 如何扩展和重写集合类中的 Add

    背景 我在 PowerShell 中有一个具有 4 个属性的数据对象 其中 3 个是字符串 第 4 个是哈希表 我想安排一个新类型 将其定义为该数据对象的集合 在这个集合类中 我希望强制执行一种特定的格式 这将使我在模块中其他地方的代码更加
  • C++ 输出到文本文件时换行符[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 这只是一个简单的问题 但我正在尝试将
  • 在远程桌面上使用 Powershell 获取 Windows DisplayLanguage

    我正在尝试通过 powershell 获取 Windows 显示语言设置远程计算机 我尝试了 Get WinUserLanguageList 但这会返回所有语言的列表 Get WinSystemLocale 和 Get Culture 也不
  • 如何在 Xamarin.Mac 中执行终端命令并读入其输出

    我们正在编写一个 Xamarin Mac 应用程序 我们需要执行像 uptime 这样的命令 并将其输出读取到应用程序中进行解析 这可以做到吗 在 Swift 和 Objective C 中都有 NTask 但我似乎无法在 C 中找到任何示
  • 在 powershell 脚本中以不同用户身份本地运行代码块

    这是非常简单的事情 但我就是无法让任何东西发挥作用 我想在特定用户下的 powershell 脚本中运行块代码 关键字是locally我正在使用 powershell 2 0 Invoke Command 似乎需要远程主机 我运行以下命令
  • 如何使用 PowerShell 查找 CPU 和 RAM 使用情况?

    我试图让 PowerShell 提供 RAM 和 CPU 使用情况 但我无法弄清楚要使用哪个 WMI 类 我的计算机有两个处理器 因此拥有这两个处理器的信息会很有用 您还可以使用 Get Counter cmdlet PowerShell

随机推荐