Мой код указан ниже
cls
Write-Host "Application Started..."
<#
if(!$args -or $args.length -lt 1)
{
Write-Host 'Usage: Usage: <Pass Path to configfile.cfg>'
Exit 99
}
else
{
[string]$inputFile = $args[0]
}
#>
#Write-Host "Config file: $inputFile"
$elapsed = [System.Diagnostics.Stopwatch]::StartNew()
$iUsers = 0
try
{
# Database variables
#Test
$sqlserver = 'CRDBTTENABD01\TTDEV'
#Model
#$sqlserver = 'CRDBTTENABM01\TTMOD'
#Prod
#$sqlserver = 'CRDBTTENABP01\TTPROD'
$database = 'inv_Turnkey_Utilities'
$table = '[dbo].[tbl_FIM_View_Copied]' ####change to [dbo].[tbl_FIM_View_Transformed] for daily feed #####
$TabDelimiter = "`t"
$CommaDelimiter = ","
$MyInvocation.MyCommand.Definition
$directorypath = Split-Path -Parent $MyInvocation.MyCommand.Definition
#$Log
$Log = $directorypath +'\Zapproved.log'
Write-Host 'Log: $Log'
If((Test-Path -Path $Log)){
Remove-Item -Path $Log -Force
}
#Create file
New-Item -Path $Log -ItemType "file" -Force
#output file
$Output = $directorypath +'\ZapprovedUsers.csv'
If((Test-Path -Path $Output)){
Remove-Item -Path $Output -Force
}
#Create file
New-Item -Path $Output -ItemType "file" -Force
$strHeader = "employeeStatus,LastName,BusinessCity,BusinessState,DeptName,Email,FirstName,HireDate,JobTitle,SupervisorName,TerminationDate,LoginID,Rehiredate,DivisionDesc,AESCid,SupervisorAESCID,User_Type,Location,LocationHierarchy,SupervisorEmail,AlternateLookupIdentifier"
$strHeader | Out-File -Append -Encoding ascii -Force -filepath $Output
#TA Users List
$UserDataDT = New-Object System.Data.DataTable
$SQLConnection = New-Object System.Data.SqlClient.SqlConnection
$SQLConnection.ConnectionString = "Server=$sqlserver;Database=$database;Integrated Security=True"
$SQLCmd= New-Object System.Data.SqlClient.SqlCommand
$SQLConnection.open();
$SQLCmd.Connection = $SQLConnection
$SqlCmd.CommandTimeout = 600 ## Allow 10 minutes to complete the operation.
$sqltoexecute = "select employeeStatus,LastName, "
$sqltoexecute += "BusinessCity,BusinessState,DeptName,Email,FirstName, "
$sqltoexecute += "HireDate, "
$sqltoexecute += "JobTitle,SupervisorName,TerminationDate,LoginID,Rehiredate, "
$sqltoexecute += "DivisionDesc,AESCid,SupervisorAESCID,User_Type,Location,LocationHierarchy,SupervisorEmail "
$sqltoexecute += "from $table" #test 10 users
$SQLCmd.CommandText = $sqltoexecute
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SQLCmd
$SqlAdapter.Fill($UserDataDT)
#$DataRowCount = $SqlAdapter.Fill($UserDataDT)
#$DataRowCount
foreach ($Row in $UserDataDT)
{
$LastName = ""
$BusinessCity = ""
$BusinessState = ""
$DeptName = ""
$Email = ""
$FirstName = ""
$HireDate = ""
$JobTitle = ""
$SupervisorName = ""
$TerminationDate = ""
$LoginID = ""
$Rehiredate = ""
$DivisionDesc = ""
$AESCid = ""
$SupervisorAESCID = ""
$User_Type = ""
$Location = ""
$LocationHierarchy = ""
$SupervisorEmail = ""
$AlternateLookupIdentifier = ""
$employeeStatus = $Row.employeeStatus
$LastName = $Row.LastName
$BusinessCity = $Row.BusinessCity
$BusinessState = $Row.BusinessState
$DeptName = $Row.DeptName
$Email = $Row.Email
$FirstName = $Row.FirstName
$HireDate = $Row.HireDate
$JobTitle = $Row.JobTitle
$SupervisorName = $Row.SupervisorName
$TerminationDate = $Row.TerminationDate
$LoginID = $Row.LoginID
$Rehiredate = $Row.Rehiredate
$DivisionDesc = $Row.DivisionDesc
$AESCid = $Row.AESCid
$SupervisorAESCID = $Row.SupervisorAESCID
$User_Type = $Row.User_Type
$Location = $Row.Location
$LocationHierarchy = $Row.LocationHierarchy
$SupervisorEmail = $Row.SupervisorEmail
$AlternateLookupIdentifier = $Row.AESCid
$LastName = $LastName -replace ",",' '
$BusinessCity = $BusinessCity -replace ",",';'
$DeptName = $DeptName -replace ",",';'
$JobTitle = $JobTitle -replace ",",';'
$SupervisorName = $SupervisorName -replace ",",';'
$DivisionDesc = $DivisionDesc -replace ",",';'
$LastName.Length
#write to file if ($cdExitCode -ne 0 -or ($matches[1] -ne 0 -and $matches[1] -ne $null))
if (($LastName.Length -gt 0)) {
$employeeStatus + $CommaDelimiter + `
$LastName + $CommaDelimiter + `
$BusinessCity + $CommaDelimiter + `
$BusinessState + $CommaDelimiter + `
$DeptName + $CommaDelimiter + `
$Email + $CommaDelimiter + `
$FirstName + $CommaDelimiter + `
$HireDate + $CommaDelimiter + `
$JobTitle + $CommaDelimiter + `
$SupervisorName + $CommaDelimiter + `
$TerminationDate + $CommaDelimiter + `
$LoginID + $CommaDelimiter + `
$Rehiredate + $CommaDelimiter + `
$DivisionDesc + $CommaDelimiter + `
$AESCid + $CommaDelimiter + `
$SupervisorAESCID + $CommaDelimiter + `
$User_Type + $CommaDelimiter + `
$Location + $CommaDelimiter + `
$LocationHierarchy + $CommaDelimiter + `
$SupervisorEmail + $CommaDelimiter + `
$AlternateLookupIdentifier | Out-File -Append -Encoding ascii -Force -filepath $Output
$iUsers++
}
}
Write-Host "Total Elapsed Time : $($elapsed.Elapsed.ToString())"
Write-Host "Total number of users: $iUsers"
Write-Host "Application Completed..."
EXIT 0
}
catch [Exception] {
Write-Host "catch Exception..."
Write-Host ($_.Exception )
Exit 99
}
После загрузки около 8 000 записей из 29 000 записей я получаю следующее сообщение об ошибке Exception ...
**System.Management.Automation.RuntimeException: Method invocation failed because [System.DBNull] does not contain a method named 'op_Addition'.
at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)**