gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 23:37:18 24 4
gpt4 key购买 nike

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\"
}
}

我想将写入主机“\$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了解更多信息。

这就是我首先创建一个新对象的原因。

尝试以下操作:

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;}

这就是长度将写入 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

关于powershell - 如何在PowerShell中将数据导出为CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21047185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com