I am getting the following error: Missing closing '}' in statement block or type definition, but I cannot see what is wrong with the below function:
function CheckForMissingSQLPermissions {
param
(
$sourceRepoId,
$RepoPath
)
$CurrentTables = New-Object System.Collections.ArrayList
$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection("xxx")
$query = "SELECT DISTINCT JCBF3SettingsTables.ObjectName
FROM JCBF3SettingsTables INNER JOIN JCBF3Settings ON JCBF3SettingsTables.JCBF3SettingsID = JCBF3Settings.JCBF3SettingsID RIGHT OUTER JOIN
NRSModules ON JCBF3Settings.Value = REPLACE(NRSModules.ModuleFilename, '.exe', '')
WHERE (NRSModules.RepoGUID = @sourceRepoId)"
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand($query, $connection)
[void]$command.Parameters.AddWithValue("@sourceRepoId", $sourceRepoId)
$connection.Open()
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $command
$DataSet = New-Object System.Data.DataSet
[void]$SqlAdapter.Fill($DataSet)
forEach ($r in $DataSet.tables[0].Rows) {
[void]$CurrentTables.Add($r.ItemArray[0])
}
$AllSQLTablesAndSPs = New-Object System.Collections.ArrayList
$query = "SELECT name FROM sys.objects WHERE type='U'
UNION ALL
SELECT SPECIFIC_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE IN ('PROCEDURE','FUNCTION')"
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand($query, $connection)
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $command
$DataSet = New-Object System.Data.DataSet
[void]$SqlAdapter.Fill($DataSet)
forEach ($r in $DataSet.tables[0].Rows) {
[void]$AllSQLTablesAndSPs.Add($r.ItemArray[0])
}
$MissingPermissions = New-Object System.Collections.ArrayList
$Files = Get-ChildItem –Path $RepoPath -Recurse -Filter *.vb
Foreach($File in $Files)
{
$FileContent = Get-Content $File.FullName
forEach ($Line in $FileContent)
{
$Words = $Line.split(" ");
forEach ($Word in $Words)
{
if ($AllSQLTablesAndSPs.Contains($Word))
{
if (! $CurrentTables.Contains($Word))
{
[void]$MissingPermissions.Add($Word)
}
}
}
}
}
return $MissingPermissions
}