Документация AWS говорит: «Для экземпляров Windows в выводе консоли экземпляра отображаются последние три ошибки журнала системных событий».
Так что это явно неправильно. Когда я запускаю "получить системный журнал" на одном из моих экземпляров EC2 с веб-консоли, я вижу
2017/05/23 21:43:15Z: EC2ConfigMonitorState: 0
2017/05/23 21:43:15Z: Windows sysprep configuration complete.
2017/05/23 21:43:16Z: AMI Origin Version: 2016.12.14
2017/05/23 21:43:16Z: AMI Origin Name: Windows_Server-2012-R2_RTM-English-64Bit-Base
2017/05/23 21:43:16Z: OS: Microsoft Windows NT 6.3.9600
2017/05/23 21:43:16Z: OsVersion: 6.3
2017/05/23 21:43:16Z: OsProductName: Windows Server 2012 R2 Standard
2017/05/23 21:43:16Z: Language: en-US
2017/05/23 21:43:16Z: TimeZone: Coordinated Universal Time
2017/05/23 21:43:16Z: Offset: UTC 00:00:00
2017/05/23 21:43:16Z: EC2 Agent: Ec2Config service v4.1.1396
2017/05/23 21:43:16Z: Driver: AWS PV Network Device v7.4.3.0
2017/05/23 21:43:16Z: Driver: AWS PV Storage Host Adapter v7.4.3.0
2017/05/23 21:43:17Z: Message: Waiting for meta-data accessibility...
2017/05/23 21:43:17Z: Message: Meta-data is now available.
....
2017/05/23 21:43:26Z: KMS: Server:169.254.169.251; Attempt:1
2017/05/23 21:43:26Z: Message: Product activation was successful
2017/05/23 21:43:26Z: Message: Windows is Ready to useii
Это не журнал событий Windows и не только «последние 3 ошибки». Где находятся выходные данные, которые я просматриваю на экземпляре, и почему в документации говорится, что это должны быть журналы системных событий ошибок, когда это не так?
Я столкнулся с той же проблемой и получил тот же результат. Итак, если вы посмотрите на
C: \ ProgramData \ Amazon \ EC2-Windows \ Launch \ Module \ Scripts \ Get-ConsolePort.ps1, где вы видите эту ошибку в строке 174.
Write-Log "ACPI SPCR table not found. Bailing Out"
Теперь, если вы посмотрите на приведенный выше оператор if, вызывающий это, вы увидите эту строку кода
$SPCRReaderExeDir = "$env:ProgramData\Amazon\EC2-Windows\Launch\Scripts"
if (Test-Path -Path $SPCRReaderExeDir)
{
$SPCRReaderExePath = Join-Path $SPCRReaderExeDir "AWSAcpiSpcrReader.exe"
$SPCROutput = cmd /c $SPCRReaderExePath
# Parse the SPCR output and extract key fields such as Vendor ID, Device ID, BDF.
$Dictionary = @{ }
if ($SPCROutput -match 'SPCR table signature')
{
Я на 90% уверен, что AWSAcpiSpcrReader.exe используется с огромным
# SIG # Begin signature block
в конце каждого файла и используется для подтверждения того, что это разрешено.
Я пытаюсь скопировать блок в свои пользовательские данные, но думаю, что он, вероятно, будет слишком большим. Возможно, если я импортирую из S3, я могу поместить туда блок sig, но я не уверен. Я не человек в стиле PowerShell, так что посмотрим.
ХАХАХАХА, ЭТО РАБОТАЛО !! 2020/06/11 02: 17: 14Z: Сообщение: Windows готова к использованию
2020/06/11 02:17:24 Z: Сообщение: OMGOMGOMG
Теперь возможно, что блок генерируется каждый раз при построении экземпляра, поэтому нам, возможно, придется каким-то образом захватить этот блок и импортировать его в сценарий пользовательских данных. Или, может быть, когда будет выпущен новый релиз. Неизвестно. Дело в том, что знак может измениться.
На панели EC2 выберите свой EC2
Перейдите в Параметры действий => выберите Настройки экземпляра => получить системные журналы.
Там вы можете найти журналы вашей системы.
Отличный вопрос. В течение нескольких месяцев я боролся с тем, чтобы увидеть что-нибудь полезное в этом журнале для новых экземпляров Windows, поэтому мне пришлось покопаться. Я хотел бы публиковать там сообщения о состоянии из сценариев подготовки.
Это вывод с последовательной консоли. Я думаю, что Amazon настроил его как консоль Linux или, может быть, это какая-то древняя часть Windows. EC2Launch пишет в него через COM-порт.
Вы можете увидеть некоторые примеры, прочитав код в _C: \ ProgramData \ Amazon \ EC2-Windows \ Launch \ Module_ в более новом экземпляре Windows.
Пример, который действительно пишет во время загрузки для некоторых экземпляров, которые у меня под рукой C: \ ProgramData \ Amazon \ EC2-Windows \ Launch \ Scripts \ SendWindowsIsReady.ps1
Есть еще один сценарий, который должен копировать в него ошибки из журнала системных событий, C: \ ProgramData \ Amazon \ EC2-Windows \ Launch \ Scripts \ SendEventLogs.ps1 ... Я думаю, это должно быть то, на что ссылается документация "последние три ошибки журнала системных событий". Но мне никогда не удавалось показать то, что я хотел показать, например, прогресс моего скрипта пользовательских данных.
У меня много проблем с записью чего-либо на консоль. Возможно, он доступен только во время загрузки или что-то в этом роде. Я пробую такие вещи, как
Import-Module C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1
Initialize-Log -Filename "testlog.log" -AllowLogToConsole
Open-SerialPort
Write-Log -Message 'hi from powershell' -LogToConsole
но я получаю эту ошибку от Open-SerialPort
:
Таблица ACPI SPCR не найдена. Выручая