Я пытался написать сценарий powershell, который будет проверять состояние входа на сервер Windows и обновлять таблицу mysql. Код работает нормально на локальной машине. Но когда я публикую его в AWS lambda, он выдает ошибку.
На моем локальном компьютере перед запуском кода я установил mysql-connector-net-8.0.18.msi, чтобы я мог подключиться кMySQL базы данных. Но когда я публикую код в AWS lambda, у меня нет возможности сделать это. Поэтому я получаю следующую ошибку:
{
errorType: ParentContainsErrorRecordException,
errorMessage: You cannot call a method on a null-valued expression.,
stackTrace: [
at Amazon.Lambda.PowerShellHost.PowerShellFunctionHost.ExecuteFunction(Stream inputStream, ILambdaContext context),
at lambda_method(Closure , Stream , Stream , LambdaContextInternal )
]
}
Может ли кто-нибудь помочь мне в этом.
Код выглядит следующим образом:
'' '
$MySQLAdminUserName = 'user'
$MySQLAdminPassword = 'Cal'
$MySQLDatabase = 'cal'
$MySQLHost = '10.22.115.111'
$servers = @(10.22.32.163)
$ConnectionString = server= + $MySQLHost + ;port=3306;uid= + $MySQLAdminUserName + ;pwd= + $MySQLAdminPassword + ;database=+$MySQLDatabase
Try
{
[void][System.Reflection.Assembly]::LoadWithPartialName(MySql.Data)
$Connection = New-Object MySql.Data.MySqlClient.MySqlConnection
$Connection.ConnectionString = $ConnectionString
$Connection.Open()
foreach ($s in $servers) #For Each Server
{
$count = 0
foreach($ServerLine in @(query user /server:$s) -split \n) #Each Server Line
{
#USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
$Parsed_Server = $ServerLine -split '\s+'
if($count -ne 0)
{
$username = $Parsed_Server[1] #USERNAME
$state = $Parsed_Server[4] #STATE
if($state -eq 'Active')
{
$Query = update ng_work set state = 'AVAILABLE' where ipAddress = '$s'
$Command = New-Object MySql.Data.MySqlClient.MySqlCommand($Query, $Connection)
$DataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($Command)
$DataSet = New-Object System.Data.DataSet
$RecordCount = $dataAdapter.Fill($dataSet, data)
$DataSet.Tables[0]
}
}
$count = $count+1
}
if($count -eq 0)
{
$Query = update ng_works set state = 'STOPPED' where ipAddress = '$s'
$Command = New-Object MySql.Data.MySqlClient.MySqlCommand($Query, $Connection)
$DataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($Command)
$DataSet = New-Object System.Data.DataSet
$RecordCount = $dataAdapter.Fill($dataSet, data)
$DataSet.Tables[0]
}
}
$Query = select * from ng_workspaces
$Command = New-Object MySql.Data.MySqlClient.MySqlCommand($Query, $Connection)
$DataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($Command)
$DataSet = New-Object System.Data.DataSet
$RecordCount = $dataAdapter.Fill($dataSet, data)
$DataSet.Tables[0]
}
Catch
{
Write-Host ERROR : Unable to run query : $query `n$Error[0]
}
Finally
{
$Connection.Close()
}
'' '