[英]Comparing 2 csv files using powershell
我编写了一个脚本,该脚本可以生成带有所有可能的密码组合(0000-9999)的文件,然后将所有不可用的密码(已分配给AD用户)带回来,但最终我想开发通过比较前两个文件(具有所有可能组合的文件和具有已组合的文件),使该脚本生成具有可用密码的第三个文件的脚本是
Import-Module Activedirectory
$all = '0000'..'9999' | out-file C:\TEMP\test\NewGroup9.txt
$re = [regex]'ixi:\+49.*(\d{4})'
Get-ADUser -Filter * -Properties ProxyAddresses |
Select-Object @{Name = 'ixi'; Expression = {$re.Match($_.ProxyAddresses).Groups[1].Value}} |
Where-Object { $_.ixi.Trim() } | export-csv C:\TEMP\test\NewGroup14.csv -Delimiter ";" -notypeinformation -Encoding "UTF8"
Get-Content C:\TEMP\test\NewGroup14.csv | % { $_ -replace 'ixi', '' } |
sort -Descending | Set-Content C:\TEMP\test\NewGroup17.csv
compare-object -ReferenceObject $(Get-Content C:\TEMP\test\NewGroup9.txt) -DifferenceObject $(get-content C:\TEMP\test\NewGroup17.csv) -IncludeEqual |
Where-Object SideIndicator -eq '<=' |
Export-Csv C:\TEMP\test\NewGroup13.csv -Delimiter ";" -notypeinformation -Encoding "UTF8"
我写的比较不起作用,它不断返回与文件组合相同的结果! 我将不胜感激任何帮助,谢谢
因为你想比较存储在文件中的所有数字是IMO毫无价值
$all = 0..9999|%{"{0:D4}" -f $_}
# or alternatively
# $all = 0..9999|%{$_.ToString('0000')}
这可以工作(未经测试)
$re = [regex]'ixi:\+49.*(\d{4})'
$used = Get-ADUser -Filter * -Properties ProxyAddresses |
Where ProxyAddressess -match $re |
Select-Object @{N='ixi';E={$Matches.Groups[1].Value}}|
Select-Object -ExpandProperty ixi
$UnUsed = Compare-Object ($used|sort) $all |
Select-Object -Expandproperty InputObject
您可以将变量$ Used / $ UnUsed保存到具有Set-Content的文件中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.