0

I have been at this for days now but can't seem to figure it out.

I am trying to compare values(PartNumber) from the database to the first line of the text file. If the PartNumber exists(in the first line of the file) display a message "Part Number Matches" if it doesn't send an email.

The issue is that I get messages saying parts do not match when they are clearly the same.

All wrongly mismatched part numbers have a letter in the beginning for ex. D78948, C56234, etc. At first I thought maybe it is because the part number is alphanumeric. But then the parts that are correctly matched are also alphanumeric.

enter image description here enter image description here

The PartNumber in the terminal is the one from the database.You can clearly see from the picture that the part number from the database and the one in the text file are exactly the same but the check still fails.

Instead of If (Get-Content -Path $fullPath -TotalCount 1 | Select-String -Pattern $partNo -AllMatches) I have tried If($eiaContent -like "*$partno*") , If($eiaContent | Select-String -Pattern $partno) But none of them seem to work.

Any help is appriciated!

Code:

$emailFrom = " CNC Data Discrepancy <DoNotReply@outlook.com>"
$emailTo  = "ABC@nicholsonmfg.com"
$server = "Sidney.sidney.nii"
$database = "NML_Sidney"
#Query to get MAFN values in the last x hours(ET-Elapsed Time) 
$MafnQueryEt = "SELECT [MAFN] As MAFNET   FROM [NML_Sidney].[dbo].[MfgAidsDocLibraryTransactions]"
#Invoke Sql
$MafnSqlEt = Invoke-Sqlcmd -ServerInstance $server -Database $database -Query $MafnQueryEt
Write-Host $MafnSqlEt.MAFNET
$aidLibPathFolder = "C:\Users\Desktop\CNC_Transfer_Test_Folders\AidLib_Test"
$filterA = "MAZAK INTEGREX E-1550 WFO"
$filterB = "MILLING_MAZAK_INTEGREX_E1550"


#Filter child items to get the .EIA files
Get-ChildItem -Path $aidLibPathFolder -Include *.EIA -Recurse | ForEach-Object{
 #Splitting the folder name because the first part of the name is the MAFN in the db(less the zeros). The second part after the dot(.) is the version number 
    $fullPath =  $_.FullName
    $baseName = $_.Name
    $folderName = $_.Directory.Name
    $splitFolderName = $folderName.Split('.')
    $firstPart = $splitFolderName[0].TrimStart("0")
    $version = "VER"+ " " + $splitFolderName[1]
    $ver = $splitFolderName[1].TrimStart("0")
    $versionNoZero = "VER"+ " " + $ver

     #Filter the EIA files that have the specific line of text.
    If(Get-Content -Path $fullPath | Select-String -Pattern $filterA,$filterB){
        #Get first line of file.
        $eiaContent= Get-Content -Path $fullPath -TotalCount 1 
        If($MafnSqlEt.MAFNET -eq  $firstPart){
        $partNoQuery = "SELECT  [PartNo] FROM [NML_Sidney].[dbo].[vMADL_EngParts]  Where MAFN=$firstPart"
        $partNoSql = Invoke-Sqlcmd -ServerInstance $server -Database $database -Query $partNoQuery
        $revQuery = "SELECT  [MA_Rev] As Rev FROM [NML_Sidney].[dbo].[MADL_EngParts]  Where MAFN=$firstPart"
        $revSql = Invoke-Sqlcmd -ServerInstance $server -Database $database -Query $revQuery
        [System.String]$partNo  =   $partNoSql.PartNo 
        $rev = "REV" + " "+ $revSql.Rev 
      $partNo.GetType() 
     
      }

    If (Get-Content -Path $fullPath -TotalCount 1 | Select-String  -Pattern $partNo -AllMatches){
        Write-Host "PART matches" -BackgroundColor Green -ForegroundColor Black
        Write-Host `PartNumberMatch` $partNo `Folder` $folderName `FileName` $baseName -BackgroundColor Green -ForegroundColor Black
    }
    Else{
        Write-Host "PART does not match" -BackgroundColor Red -ForegroundColor Black
        Send-MailMessage -From $emailFrom -To 'hargul.sidhu@nicholsonmfg.com' -Subject "ALERT! DATA DISCREPANCY - '$folderName'"   -Body "Incorrect Part Number in '$baseName' Path -'$fullPath'. **DO NOT REPLY. THIS INBOX IS NOT MONITORED**" -SmtpServer 'XXXX
        Write-Host `PartNumberMismatch` $partNo `Folder` $folderName `FileName` $baseName -BackgroundColor Red -ForegroundColor Black
    }
Brute
  • 121
  • 1
  • 10
  • If I read your script, I have a lot of questions as *What is in `$fullPath`?*. Please create a [mcve]. – iRon Mar 29 '22 at 06:22
  • 2
    Presumably `$MafnSqlEt` is an object array and not a array of strings. Look for the `Select-Object -ExpandProperty` parameter (or member enumeration) – iRon Mar 29 '22 at 06:27
  • @iRon `$fullPath` is `$_.FullName`. I didn't add a block of code there. So, there is bunch of stuff happening here that has nothing to do with the issue so I didn't go into the details. – Brute Mar 29 '22 at 06:46

0 Answers0