首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较powershell中的两个CSV文件并创建一个输出

比较powershell中的两个CSV文件并创建一个输出
EN

Stack Overflow用户
提问于 2018-11-10 18:28:38
回答 1查看 97关注 0票数 1

我目前正在编写一个脚本来导入2个csv文件,比较fqdn列并将结果输出到一个文件中。

问题是,经过许多小时的测试,我的脚本似乎在工作,直到获得每个需要导入的文件的路径为止,但我似乎无法让import-csv命令执行我所需要的操作。

我很感谢你能提供的任何指导。

到目前为止,我的脚本和我得到的错误如下:

代码语言:javascript
复制
$CMDB_Installed = Get-ChildItem -Path C:\Users\nha1\Desktop\Reports\CMDBInstall | Sort CreationTime -Descending | Select -expa FullName -First 1 | Out-String

$SCOM_AgentList = Get-ChildItem -Path C:\Users\nha1\Desktop\Reports\SCOMUAT | Sort CreationTime -Descending | Select -expa FullName -First 1 | Out-String



$SL = Import-Csv $SCOM_AgentList

$CL = Import-Csv $CMDB_Installed



Compare-Object -ReferenceObject $CL -DifferenceObject $SL -Property fqdn |

Export-Csv -NoTypeInformation -Path = C:\Users\nha1\Desktop\Reports\AuditOutput\UATNeedsAgent+SCOM\UATHosts-NotinSCOM$(get-date -format yyyy-MM-dd).csv

错误信息:

代码语言:javascript
复制
import-csv : Illegal characters in path.

At line:4 char:7

+ $SL = import-csv $SCOM_AgentList

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

    + CategoryInfo          : OpenError: (:) [Import-Csv], ArgumentException

    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ImportCsvCommand


import-csv : Illegal characters in path.

At line:5 char:7

+ $CL = import-csv $CMDB_Installed

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

    + CategoryInfo          : OpenError: (:) [Import-Csv], ArgumentException

    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ImportCsvCommand
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-10 19:21:49

$CMDB_Installed =._~_$CMDB_Installed_

不使用 Out-String,除非您想要显示的多行字符串表示形式.

因此,您的文件路径变量包含换行符(换行),Import-Csv对此表示不满,因为在NTFS ( Windows)中,文件名中的换行符是非法的。

简单地省略Out-String调用,因为根据定义,Select -expa FullName -First 1已经输出了一个字符串(假定Get-ChildItem输出的对象上的.FullName属性是[string]-typed)。

要重新创建该问题:

代码语言:javascript
复制
PS> Import-Csv "foo`n"  # illegal line break in file path
Import-Csv : Illegal characters in path.

为了演示Out-String生成多行字符串,即使使用单行字符串作为输入:

代码语言:javascript
复制
PS> ('foo' | Out-String).EndsWith("`n")
True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53242118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档