我是PowerShell的新手,并且有一个脚本循环通过Active Directory搜索某些计算机 . 我得到几个变量,然后运行函数来检查WMI和注册表设置等内容 .
在控制台中,我的脚本运行非常简单Write-Host命令可以根据需要在屏幕上打印数据 . 我在使用管道时知道Export-Csv但我不打算从管道打印 .
我想将变量写入文本文件,继续循环,并检查AD中的下一台计算机...输出下一行相同变量的下一次迭代 . 这是我的写主持人:
Write-Host ($computer)","($Speed)","($Regcheck)","($OU)
输出文件:
$computer,$Speed,$Regcheck | out-file -filepath C:\temp\scripts\pshell\dump.txt -append -width 200
它给了我数据,但每个变量都在它自己的行上 . 为什么?我想用逗号分隔的一行上的所有变量 . 是否有一种类似于VB writeline的简单方法?我的PowerShell版本似乎是2.0 .
7 回答
我通常在这些循环中构造自定义对象,然后将这些对象添加到我可以轻松操作,排序,导出为CSV等的数组中:
用这个:
您可以使用PowerShell的`-join'运算符将一组值连接在一起 . 这是一个例子:
产量
$computer,$Speed,$Regcheck
将创建一个数组,并且每个变量运行out-file
=他们得到单独的行 . 如果首先使用变量构造单个字符串,它将显示一行 . 像这样:我在谷歌搜索方面处于领先地位 . 在一个善意的展示中,我已经包含了我从这段代码的部分拼凑而成的内容以及我在此过程中收集的其他代码 .
干杯
简单的解决方案是避免在管道到Out-File之前创建数组 . PowerShell的规则#1是逗号是一个特殊的分隔符,默认行为是创建一个数组 . 连接是这样完成的 .
这将创建一个包含三个项目的数组 .
与用逗号分隔的三个项目的连接 .
假设你有两个变量:
要将它们保存到文本文件:
有关Out-File的更多信息,请在shell中键入: