如何在PowerShell中将数据导出为CSV?

2024-04-03

foreach ($computer in $computerlist) {
    if((Test-Connection -Cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet))
    {
        foreach ($file in $REMOVE) {
            Remove-Item "\\$computer\$DESTINATION\$file" -Recurse
            Copy-Item E:\Code\powershell\shortcuts\* "\\$computer\$DESTINATION\"            
        }
    } else {
        Write-Host "\\$computer\$DESTINATION\"
    }
}

我想将 Write-Host "\$computer\$DESTINATION\" 导出到 CSV 文件,以便我知道脚本运行时哪些计算机处于离线状态。

我在 Windows 7 机器上运行此程序


此解决方案创建一个 psobject 并将每个对象添加到一个数组中,然后通过 Export-CSV 管道传输数组内容来创建 csv。

$results = @()
foreach ($computer in $computerlist) {
    if((Test-Connection -Cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet))
    {
        foreach ($file in $REMOVE) {
            Remove-Item "\\$computer\$DESTINATION\$file" -Recurse
            Copy-Item E:\Code\powershell\shortcuts\* "\\$computer\$DESTINATION\"            
        }
    } else {

        $details = @{            
                Date             = get-date              
                ComputerName     = $Computer                 
                Destination      = $Destination 
        }                           
        $results += New-Object PSObject -Property $details  
    }
}
$results | export-csv -Path c:\temp\so.csv -NoTypeInformation

如果将字符串对象通过管道传输到 csv,您会将其长度写入 csv,这是因为这些是字符串的属性,请参阅here http://blogs.technet.com/b/heyscriptingguy/archive/2011/09/23/use-powershell-to-work-with-csv-formatted-text.aspx了解更多信息。

这就是为什么我首先创建一个新对象。

请尝试以下操作:

write-output "test" | convertto-csv -NoTypeInformation

这会给你:

"Length"
"4"

如果您在 Write-Output 上使用 Get-Member,如下所示:

write-output "test" | Get-Member -MemberType Property

你会看到它有一个属性 - 'length':

   TypeName: System.String

Name   MemberType Definition
----   ---------- ----------
Length Property   System.Int32 Length {get;}

这就是为什么Length将写入 csv 文件。


更新:附加 CSV如果文件变大,这不是最有效的方法......

$csvFileName = "c:\temp\so.csv"
$results = @()
if (Test-Path $csvFileName)
{
    $results += Import-Csv -Path $csvFileName
}
foreach ($computer in $computerlist) {
    if((Test-Connection -Cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet))
    {
        foreach ($file in $REMOVE) {
            Remove-Item "\\$computer\$DESTINATION\$file" -Recurse
            Copy-Item E:\Code\powershell\shortcuts\* "\\$computer\$DESTINATION\"            
        }
    } else {

        $details = @{            
                Date             = get-date              
                ComputerName     = $Computer                 
                Destination      = $Destination 
        }                           
        $results += New-Object PSObject -Property $details  
    }
}
$results | export-csv -Path $csvFileName -NoTypeInformation
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在PowerShell中将数据导出为CSV? 的相关文章

随机推荐

  • 如何控制.NET SoapFormatter中的命名空间?

    我正在编写一些需要向后兼容使用 SOAP 序列化某些对象的现有远程处理代码的代码 我的困难是我必须将一些对象移动到新程序集 因此远程处理被破坏 例如 我使用 NET SoapFormatter 序列化一个对象 如下所示 Person p n
  • vim 正则表达式用于替换引号内的空格

    我有以下格式的文本 ERR OUT OF MEM ERR OUT OF MEM ERR SOMETHING BAD ERR SOMETHING BAD 我想用下划线替换文本中引号内的所有空格 ERR OUT OF MEM ERR OUT O
  • MVVM 最佳实践:视图模型之间的通信

    我的简化程序结构如下所示 public class Manager public Item MyItem get set public void Recalculate public class Item public string Som
  • 每对观测值的马氏距离

    我正在尝试计算数据集的每个观测值之间的马哈拉诺比斯距离dat 其中每行是一个观察值 每列是一个变量 该距离定义为 我写了一个函数来做到这一点 但我觉得它很慢 在 R 中是否有更好的方法来计算它 生成一些数据来测试该功能 generateDa
  • 这个正则表达式不应该发生灾难性的回溯

    有人可以解释为什么 Java 的正则表达式引擎会在此正则表达式上进入灾难性的回溯模式吗 据我所知 每个交替都与其他每个交替相互排斥 s s Text p o de a car itaucard mastercard platinum SUS
  • 如何在Python 3.6中执行2个协程

    我无法让两个协程在我的 Python 3 6 程序中并行执行 这是一个例子 import asyncio time def main loop asyncio get event loop loop run until complete s
  • 查找C++静态初始化顺序问题

    我们遇到了一些问题静态初始化顺序惨败 http www parashift com c faq lite static init order html 并且我正在寻找方法来梳理大量代码以查找可能发生的情况 关于如何有效地做到这一点有什么建议
  • Cypher 查询 JSON 格式的结果

    在演员 电影演示图上 cypher 在单独的数组中返回列名称 MATCH n Person RETURN n name as Name n born as Born ORDER BY n born LIMIT 5 results colum
  • Mysql查询查找具有相同列值的字段之和

    我有一张这样的桌子 id invent id order 1 95948214 70 2 46018572 30 3 46018572 20 4 46018572 50 5 36025764 60 6 36025764 70 7 95948
  • Java音乐播放器:歌曲信息和播放[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在Android中 我们可以使用媒体播放器在设备上播放歌曲 并使用光标来获取曲目信息 操作系统跟踪的信
  • 简单登录返回空白页

    我正在学习 PHP 并且制作了一个简单的登录脚本 但问题是它仅将我重定向到空白页面 如果用户凭据正确 它的意思是重定向到index php 但情况显然并非如此 还有验证 如果用户输入空白 则会返回错误 这似乎没有被执行 登录 php
  • 使用 rdmsr/rdpmc 提高分支预测精度

    我试图了解分支预测单元在 CPU 中如何工作 我用过papi还有linux的perf events但他们都没有给出准确的结果 对于我的情况 这是我的代码 void func int arr int sequence len for int
  • 在c中获取浮点数的指数

    抱歉 如果已经有人问过这个问题 并且我已经看到了提取浮点数指数的其他方法 但这就是给我的 unsigned f2i float f union unsigned i float f x x i 0 x f f return x i 我无法理
  • css4 中可以使用父选择器吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Here is fiddle http jsfiddle net uday redI V9F7d 7 我有 2 个 div 一个是外盒 另一个是
  • Matplotlib 在 vi​​rtualenv 中不显示图形

    我已经在我的 virtualenv 中安装了 pip matplotlib 并且正在尝试绘制一个简单的图表 我使用 Eclipse 和 PyDev 当我从 Eclipse 运行脚本时 它根本不显示任何图形 我已经尝试过其他问题中提出的建议
  • 是否可以在 Cloudformation 中更新 Elastic Beanstalk 环境而不影响部署到其中的版本?

    我正在使用 Cloudformation 创建 Elastic Beanstalk 环境 我必须创建一个 ApplicationVersion 只是为了启动它并将其输入到环境的定义中 我创建其他应用程序版本并以其他方式将它们部署到集群 Co
  • C 线程编程 - 增加共享变量

    嘿伙计们 所以我正在尝试温习我的 C 线程 我发现的一个问题是 给定一个全局变量 int x 0 实现函数 void 无用 int n 它创建 n 个线程 在循环中将 x 加 1 每个线程在 x 达到 100 时终止 我只是没有掌握线程 需
  • 在结账页面和 WooCommerce 数据字段中添加取货地点自定义字段

    我在另一个类似问题的答案中找到了以下解决方案 根据 WooCommerce 中的自定义字段值将文本添加到订单摘要 https stackoverflow com questions 45906636 add text to order su
  • 如何将多列传递给php中的变量

    我正在开发一个项目 该项目需要将多个列内容传递给 php 变量 我能够选择一列内容并将其传递给变量 但在多列上失败 myEMPNEM sqlNEM SELECT first name middle name last name job ti
  • 如何在PowerShell中将数据导出为CSV?

    foreach computer in computerlist if Test Connection Cn computer BufferSize 16 Count 1 ea 0 quiet foreach file in REMOVE