我目前正在编写一个脚本来导入2个csv文件,比较fqdn列并将结果输出到一个文件中。
问题是,经过许多小时的测试,我的脚本似乎在工作,直到获得每个需要导入的文件的路径为止,但我似乎无法让import-csv命令执行我所需要的操作。
我很感谢你能提供的任何指导。
到目前为止,我的脚本和我得到的错误如下:
$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错误信息:
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发布于 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)。
要重新创建该问题:
PS> Import-Csv "foo`n" # illegal line break in file path
Import-Csv : Illegal characters in path.为了演示Out-String生成多行字符串,即使使用单行字符串作为输入:
PS> ('foo' | Out-String).EndsWith("`n")
Truehttps://stackoverflow.com/questions/53242118
复制相似问题