PowerShell-正在与Get ChildItem进行斗争

PowerShell-正在与Get ChildItem进行斗争,powershell,Powershell,我对这个很着迷,希望有人能帮我。请温柔一点,我的编码技术不是很好 我有两个单独的CSV文件,我正试图对它们进行比较。每个CSV包含一个计算机帐户列表。我想将这两个文件之间的差异导出到一个新的CSV。一个文件位于定义的目录中,但另一个文件位于单独的目录结构中。下面是一个例子: 定义目录中的文件1:C:\blah\xyz.csv 文件2位于不同的目录中:C:\share\uploads\foo\bar\xyz computers.csv 这些文件名的XYZ部分是客户端名称,路径的\foo\bar\部

我对这个很着迷,希望有人能帮我。请温柔一点,我的编码技术不是很好

我有两个单独的CSV文件,我正试图对它们进行比较。每个CSV包含一个计算机帐户列表。我想将这两个文件之间的差异导出到一个新的CSV。一个文件位于定义的目录中,但另一个文件位于单独的目录结构中。下面是一个例子:

定义目录中的文件1:
C:\blah\xyz.csv

文件2位于不同的目录中:
C:\share\uploads\foo\bar\xyz computers.csv

这些文件名的XYZ部分是客户端名称,路径的
\foo\bar\
部分对于每个文件可能不同。每个文件名始终以
*-computers.csv
结尾。我正在尝试使用搜索结果与定义目录中的文件进行比较。由于我对编码一无所知,所以失败得很惨。(我正在努力!)

这是我的。由于
$file2
为空,似乎失败:

gci C:\share\uploads -include *computers.csv -recurse | foreach {$path = $_.FullName;
$client = $_.Name.Trim("-computers.csv");
$file1 = import-csv -path c:\workingdir\output\$client.csv;
$file2 = import-csv -path $path | Compare-Object $file1 $file2 -property Name} | export-csv C:\workingdir\$client.csv -NoTypeInformation

任何协助都将不胜感激。我卡住了

没有一些示例CSV文件,不确定我是否修复了它或使它变得更糟。其中一些问题:

  • 您没有将任何内容传送到
    比较对象
  • 添加了验证
    导入CSV
    调用是否有效的代码,如果无效,则编写消息
  • 调用
    Trim
    失败。我把它换了
  • 代码不是很可读
  • 添加了一些详细的日志记录
  • 遗留问题

  • 导出将使用最后一个客户端名称
  • 示例代码
    $files=Get ChildItem C:\share\uploads-include*computers.csv-recurse
    $files | Foreach对象{
    $path=$\ux.FullName
    写详细的“路径:$Path”-详细
    $client=$\ux.Name.Replace(“-computers.csv”,”)
    编写详细的“客户端:$Client”-详细
    $file1=导入Csv-路径c:\workingdir\output\$client.Csv
    $file2=导入Csv-路径$path
    如果($file1-和$file2){
    比较对象$file1$file2-属性名称
    } 
    其他的
    {
    写入详细信息-消息“错误处理$path”-详细信息
    }
    }|导出Csv C:\workingdir\$client.Csv-notype信息
    
    没有一些示例CSV文件,不确定我是否修复了它或使它变得更糟。其中一些问题:

  • 您没有将任何内容传送到
    比较对象
  • 添加了验证
    导入CSV
    调用是否有效的代码,如果无效,则编写消息
  • 调用
    Trim
    失败。我把它换了
  • 代码不是很可读
  • 添加了一些详细的日志记录
  • 遗留问题

  • 导出将使用最后一个客户端名称
  • 示例代码
    $files=Get ChildItem C:\share\uploads-include*computers.csv-recurse
    $files | Foreach对象{
    $path=$\ux.FullName
    写详细的“路径:$Path”-详细
    $client=$\ux.Name.Replace(“-computers.csv”,”)
    编写详细的“客户端:$Client”-详细
    $file1=导入Csv-路径c:\workingdir\output\$client.Csv
    $file2=导入Csv-路径$path
    如果($file1-和$file2){
    比较对象$file1$file2-属性名称
    } 
    其他的
    {
    写入详细信息-消息“错误处理$path”-详细信息
    }
    }|导出Csv C:\workingdir\$client.Csv-notype信息
    
    首先,我不会把所有内容都放在一行上。通过删除管道分隔此行:
    $file2=import csv-path$path | Compare Object$file1$file2-property Name
    首先,我不会将所有内容放在一行。通过删除管道分隔此行:
    $file2=import csv-path$path | Compare Object$file1$file2-property Name
    谢谢Travis,只需一次修改即可完美完成:我将管道连接到Compare Object行的末尾,并在其中添加了export csv命令。谢谢Travis,这只需要一个修改就可以完美地工作:我用管道连接比较对象行的末尾,并在其中添加了导出csv命令。