PS PowerShell  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Продвинутые функции

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом вопросе верен только один вариант; близкие ответы различаются механизмом, порядком выполнения, областью действия или эксплуатационной границей. После завершения вы увидите общий результат, результаты по 5 тематическим шкалам и подробные объяснения.
Вопрос 1 из 25
Функция с CmdletBinding получает общие параметры. Какое объяснение точнее?
PowerShellФункция с CmdletBinding получает общие параметры
function Get-Demo { [CmdletBinding()]param() Write-Verbose "details"; 1 }
Get-Demo -Verbose
Вопрос 2 из 25
PositionalBinding отключён. Какой вывод можно подтвердить?
PowerShellPositionalBinding отключён
function Invoke-X { [CmdletBinding(PositionalBinding=$false)]param([Parameter(Position=0)][string]$Name) $Name }
Вопрос 3 из 25
SupportsShouldProcess включён. Какое утверждение верно для этого случая?
PowerShellSupportsShouldProcess включён
function Remove-Demo { [CmdletBinding(SupportsShouldProcess)]param([string]$Path) if($PSCmdlet.ShouldProcess($Path,"Remove")){Remove-Item -LiteralPath $Path} }
Вопрос 4 из 25
Функция пишет диагностический текст через Write-Host. Какое утверждение верно для этого случая?
Вопрос 5 из 25
Параметр с именем Verbose объявлен вручную. На каком правиле основан результат?
Вопрос 6 из 25
ValidateSet ограничивает строковые значения. Что стоит изменить в первую очередь?
PowerShellValidateSet ограничивает строковые значения
function Set-Mode { param([ValidateSet("Fast","Safe")][string]$Mode) $Mode }
Set-Mode Safe
Вопрос 7 из 25
ValidateRange применяется к int. Какая граница важна для автоматизации?
PowerShellValidateRange применяется к int
function Set-Retry { param([ValidateRange(0,10)][int]$Count) $Count }
Get-Command Set-Retry | Select-Object Name,CommandType,Parameters
Вопрос 8 из 25
ValidateScript проверяет существование файла. Какой принцип PowerShell здесь работает?
PowerShellValidateScript проверяет существование файла
function Read-X { param([ValidateScript({Test-Path $_ -PathType Leaf})][string]$Path) Get-Content $Path }
Вопрос 9 из 25
ValidateNotNullOrEmpty применяется к массиву. Какое ограничение здесь нельзя упустить?
Вопрос 10 из 25
Валидация выполняет медленный сетевой запрос. Что стоит изменить в первую очередь?
Вопрос 11 из 25
Параметр ValueFromPipeline обрабатывается в process. На каком правиле основан результат?
PowerShellПараметр ValueFromPipeline обрабатывается в process
function Get-Double { [CmdletBinding()]param([Parameter(ValueFromPipeline)][int]$Value) process{$Value*2} }
1..3 | Get-Double
Вопрос 12 из 25
ValueFromPipelineByPropertyName использует Alias. Как следует читать этот фрагмент?
PowerShellValueFromPipelineByPropertyName использует Alias
function Get-Node { param([Parameter(ValueFromPipelineByPropertyName)][Alias("CN")][string]$ComputerName) process{$ComputerName} }
[pscustomobject]@{CN="srv1"}|Get-Node
Вопрос 13 из 25
End выводит один сводный объект. Какой вывод можно подтвердить?
PowerShellEnd выводит один сводный объект
function Measure-X { [CmdletBinding()]param([Parameter(ValueFromPipeline)]$InputObject) begin{$n=0}process{$n++}end{[pscustomobject]@{Count=$n}} }
Вопрос 14 из 25
Параметр называется InputObject и также используется автоматическая $input. Какой вывод можно подтвердить?
Вопрос 15 из 25
Функция принимает и массив аргументом, и объекты по конвейеру. Что стоит изменить в первую очередь?
Вопрос 16 из 25
ShouldProcess получает target и action. Как изменится состояние после выполнения?
PowerShellShouldProcess получает target и action
$result = & { if($PSCmdlet.ShouldProcess($Path,"Delete cached file")){ Remove-Item -LiteralPath $Path } }
$shape = if($null -eq $result){'<null>'}elseif($result -is [array]){'array'}else{$result.GetType().Name}
[pscustomobject]@{ Shape=$shape; Values=@($result) }
Вопрос 17 из 25
ConfirmImpact установлен High. Какой вывод был бы слишком сильным?
PowerShellConfirmImpact установлен High
$result = [CmdletBinding(SupportsShouldProcess,ConfirmImpact="High")]param()
$resultType = if($null -eq $result){'<null>'}else{$result.GetType().FullName}
[pscustomobject]@{ Result=$result; Type=$resultType; Count=@($result).Count }
Вопрос 18 из 25
ShouldContinue используется после ShouldProcess. Какое решение здесь надёжнее?
PowerShellShouldContinue используется после ShouldProcess
$result = $PSCmdlet.ShouldContinue("Irreversible operation","Warning")
$resultType = if($null -eq $result){'<null>'}else{$result.GetType().FullName}
[pscustomobject]@{ Result=$result; Type=$resultType; Count=@($result).Count }
Вопрос 19 из 25
Внешняя команда изменяет систему внутри функции. Какое скрытое допущение делает решение ненадёжным?
Вопрос 20 из 25
WhatIf используется как единственная гарантия безопасности. Какое скрытое допущение делает решение ненадёжным?
Вопрос 21 из 25
Связывание параметров неожиданно выбрало другой набор. Какой вывод можно подтвердить?
PowerShellСвязывание параметров неожиданно выбрало другой набор
function Test-X{[CmdletBinding(DefaultParameterSetName="A")]param([Parameter(ParameterSetName="A")][string]$Name,[Parameter(ParameterSetName="B")][int]$Id) $PSCmdlet.ParameterSetName}
Test-X -Id 3
Вопрос 22 из 25
WhatIf ничего не показывает. Какой подход выдержит повторный запуск?
PowerShellWhatIf ничего не показывает
Get-Command Remove-Demo | Select-Object -ExpandProperty Parameters | Select-Object -ExpandProperty Keys
Вопрос 23 из 25
Pipeline input обрабатывает только последний объект. Какой принцип PowerShell здесь работает?
PowerShellPipeline input обрабатывает только последний объект
$result = 1..3 | Get-Demo -Verbose 4>&1
$shape = if($null -eq $result){'<null>'}elseif($result -is [array]){'array'}else{$result.GetType().Name}
[pscustomobject]@{ Shape=$shape; Values=@($result) }
Вопрос 24 из 25
Тест валидации зависит от реальной файловой системы. Что точнее всего описывает поведение?
Вопрос 25 из 25
Функция загрязняет успешный поток. Какое утверждение верно для этого случая?

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

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

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

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