PS PowerShell  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Политика выполнения и подпись сценариев

Политика выполнения и подпись сценариев: практический тест по PowerShell с чтением кода, поиском причины ошибки и выбором надёжного решения. Темы: Политика выполнения ExecutionPolicy, Подпись, Сертификаты, Границы защиты, Диагностика: подпись сценариев, Безопасная эксплуатация: подпись сценариев. Базовая линия — PowerShell 7.6.3; Windows-зависимые команды и отличия Windows PowerShell 5.1 отмечены в условиях.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант; близкие ответы различаются механизмом, порядком выполнения, областью действия или эксплуатационной границей. После завершения вы увидите общий результат, результаты по 6 тематическим шкалам и подробные объяснения.
Вопрос 1 из 30
Get-ExecutionPolicy -List показывает уровни scope. Какое скрытое допущение делает решение ненадёжным?
PowerShellGet-ExecutionPolicy -List показывает уровни scope
$result = Get-ExecutionPolicy -List
$items = @($result)
[pscustomobject]@{ Count=$items.Count; First=$items | Select-Object -First 1; IsNull=($null -eq $result) }
Вопрос 2 из 30
Set-ExecutionPolicy меняет Process scope. Какое объяснение не зависит от случайностей окружения?
PowerShellSet-ExecutionPolicy меняет Process scope
$result = Set-ExecutionPolicy Bypass -Scope Process -Force
$resultType = if($null -eq $result){'<null>'}else{$result.GetType().FullName}
[pscustomobject]@{ Result=$result; Type=$resultType; Count=@($result).Count }
Вопрос 3 из 30
На Linux Set-ExecutionPolicy вызывается с RemoteSigned. Что остаётся непроверенным после успешного запуска?
PowerShellНа Linux Set-ExecutionPolicy вызывается с RemoteSigned
$result = Get-ExecutionPolicy
$items = @($result)
[pscustomobject]@{ Count=$items.Count; First=$items | Select-Object -First 1; IsNull=($null -eq $result) }
Вопрос 4 из 30
RemoteSigned считается защитой от вредоносного кода. Какая граница важна для автоматизации?
Вопрос 5 из 30
Group Policy задаёт AllSigned. Что точнее всего описывает поведение?
Вопрос 6 из 30
Get-AuthenticodeSignature проверяет сценарий. Какое утверждение верно для этого случая?
PowerShellGet-AuthenticodeSignature проверяет сценарий
$result = Get-AuthenticodeSignature .\Deploy.ps1 | Select-Object Status,StatusMessage,SignerCertificate
$shape = if($null -eq $result){'<null>'}elseif($result -is [array]){'array'}else{$result.GetType().Name}
[pscustomobject]@{ Shape=$shape; Values=@($result) }
Вопрос 7 из 30
После подписания в файл добавлен перевод строки. Какое объяснение не зависит от случайностей окружения?
PowerShellПосле подписания в файл добавлен перевод строки
Add-Content .\Deploy.ps1 "# changed"
Get-AuthenticodeSignature .\Deploy.ps1
Вопрос 8 из 30
Set-AuthenticodeSignature использует code-signing certificate. Какое действие не создаст новой скрытой зависимости?
PowerShellSet-AuthenticodeSignature использует code-signing certificate
$cert=Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | Select-Object -First 1
Set-AuthenticodeSignature .\Deploy.ps1 $cert
Вопрос 9 из 30
Valid подпись неизвестного издателя автоматически означает безопасный код. На каком правиле основан результат?
Вопрос 10 из 30
Timestamp отсутствует. Какой вывод был бы слишком сильным?
Вопрос 11 из 30
Code Signing EKU проверяется в сертификате. Какое различие нужно зафиксировать в коде?
PowerShellCode Signing EKU проверяется в сертификате
$result = $cert.EnhancedKeyUsageList | Select-Object FriendlyName,ObjectId
$shape = if($null -eq $result){'<null>'}elseif($result -is [array]){'array'}else{$result.GetType().Name}
[pscustomobject]@{ Shape=$shape; Values=@($result) }
Вопрос 12 из 30
Закрытый ключ экспортируется в PFX. Что остаётся непроверенным после успешного запуска?
PowerShellЗакрытый ключ экспортируется в PFX
$result = Export-PfxCertificate -Cert $cert -FilePath signer.pfx -Password $pw
$shape = if($null -eq $result){'<null>'}elseif($result -is [array]){'array'}else{$result.GetType().Name}
[pscustomobject]@{ Shape=$shape; Values=@($result) }
Вопрос 13 из 30
Цепочка строится на целевом сервере. Почему локальный успех ещё ничего не доказывает?
PowerShellЦепочка строится на целевом сервере
$chain=[Security.Cryptography.X509Certificates.X509Chain]::new();$chain.Build($cert)
$valueType = if($null -eq $chain){'<null>'}else{$chain.GetType().FullName}
[pscustomobject]@{ Value=$chain; Type=$valueType; Count=@($chain).Count }
Вопрос 14 из 30
Сертификат выбирается только по Subject. Какое решение здесь надёжнее?
Вопрос 15 из 30
Сертификат истекает во время релизного цикла. Какое утверждение верно для этого случая?
Вопрос 16 из 30
AllSigned разрешает подписанный вредоносный сценарий доверенного издателя. Какое утверждение верно для этого случая?
PowerShellAllSigned разрешает подписанный вредоносный сценарий доверенного издателя
Get-ExecutionPolicy -List
Get-AuthenticodeSignature .\Deploy.ps1
Вопрос 17 из 30
Bypass запрещён политикой приложения, но пользователь запускает команды вручную. Что остаётся непроверенным после успешного запуска?
PowerShellBypass запрещён политикой приложения, но пользователь запускает команды вручную
# Сценарий для ревью: Bypass запрещён политикой приложения, но пользователь запускает команды вручную.
$policy = Get-ExecutionPolicy -List
$signature = Get-AuthenticodeSignature -FilePath .\deploy.ps1
[pscustomobject]@{ Policy=$policy; Status=$signature.Status; Signer=$signature.SignerCertificate.Subject }
if($signature.Status -eq 'Valid'){ & .\deploy.ps1 }
Вопрос 18 из 30
Сценарий загружает код из строки после проверки подписи файла. На каком правиле основан результат?
PowerShellСценарий загружает код из строки после проверки подписи файла
# Сценарий для ревью: Сценарий загружает код из строки после проверки подписи файла.
$policy = Get-ExecutionPolicy -List
$signature = Get-AuthenticodeSignature -FilePath .\deploy.ps1
[pscustomobject]@{ Policy=$policy; Status=$signature.Status; Signer=$signature.SignerCertificate.Subject }
if($signature.Status -eq 'Valid'){ & .\deploy.ps1 }
Вопрос 19 из 30
Подпись проверяется после запуска сценария. Что остаётся непроверенным после успешного запуска?
Вопрос 20 из 30
Сертификат отозван, но проверка не обращается к сети. Как следует читать этот фрагмент?
Вопрос 21 из 30
Сценарий не запускается несмотря на CurrentUser RemoteSigned. Какой результат нужно ожидать?
PowerShellСценарий не запускается несмотря на CurrentUser RemoteSigned
Get-ExecutionPolicy -List
Get-Item .\Deploy.ps1 -Stream Zone.Identifier -ErrorAction SilentlyContinue
Вопрос 22 из 30
Подпись UnknownError/NotTrusted. Какой подход выдержит повторный запуск?
PowerShellПодпись UnknownError/NotTrusted
$result = Get-AuthenticodeSignature .\Deploy.ps1 | Format-List *
$resultType = if($null -eq $result){'<null>'}else{$result.GetType().FullName}
[pscustomobject]@{ Result=$result; Type=$resultType; Count=@($result).Count }
Вопрос 23 из 30
На одном сервере Valid, на другом NotTrusted. Где заканчивается гарантия этого механизма?
PowerShellНа одном сервере Valid, на другом NotTrusted
# Сценарий для ревью: На одном сервере Valid, на другом NotTrusted.
$policy = Get-ExecutionPolicy -List
$signature = Get-AuthenticodeSignature -FilePath .\deploy.ps1
[pscustomobject]@{ Policy=$policy; Status=$signature.Status; Signer=$signature.SignerCertificate.Subject }
if($signature.Status -eq 'Valid'){ & .\deploy.ps1 }
Вопрос 24 из 30
После упаковки подпись сломалась. Какой подход выдержит повторный запуск?
Вопрос 25 из 30
Тест меняет системную policy. Что точнее всего описывает поведение?
Вопрос 26 из 30
Ключ подписи хранится на сборочном агенте в файле. Какой подход выдержит повторный запуск?
PowerShellКлюч подписи хранится на сборочном агенте в файле
# Сценарий для ревью: Ключ подписи хранится на сборочном агенте в файле.
$policy = Get-ExecutionPolicy -List
$signature = Get-AuthenticodeSignature -FilePath .\deploy.ps1
[pscustomobject]@{ Policy=$policy; Status=$signature.Status; Signer=$signature.SignerCertificate.Subject }
if($signature.Status -eq 'Valid'){ & .\deploy.ps1 }
Вопрос 27 из 30
Все разработчики имеют один общий сертификат. Что точнее всего описывает поведение?
PowerShellВсе разработчики имеют один общий сертификат
# Сценарий для ревью: Все разработчики имеют один общий сертификат.
$policy = Get-ExecutionPolicy -List
$signature = Get-AuthenticodeSignature -FilePath .\deploy.ps1
[pscustomobject]@{ Policy=$policy; Status=$signature.Status; Signer=$signature.SignerCertificate.Subject }
if($signature.Status -eq 'Valid'){ & .\deploy.ps1 }
Вопрос 28 из 30
Проверяется только Status Valid. Какой принцип PowerShell здесь работает?
PowerShellПроверяется только Status Valid
# Сценарий для ревью: Проверяется только Status Valid.
$policy = Get-ExecutionPolicy -List
$signature = Get-AuthenticodeSignature -FilePath .\deploy.ps1
[pscustomobject]@{ Policy=$policy; Status=$signature.Status; Signer=$signature.SignerCertificate.Subject }
if($signature.Status -eq 'Valid'){ & .\deploy.ps1 }
Вопрос 29 из 30
Отзыв сертификата не попал на изолированные узлы. Какой вывод можно подтвердить?
Вопрос 30 из 30
Подписанный сценарий запускается с лишними правами. Какой вывод можно подтвердить?

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу