powershell ресурс
Используйте powershell ресурс аудита Chef InSpec для проверки скрипта Powershell на платформе Windows.
Доступность
Установка
Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Версия
Этот ресурс стал доступен в версии v1.0.0 InSpec.
Синтаксис
Блок ресурса powershell объявляет скрипт Powershell для проверки и затем сравнивает вывод этой команды с совпадением в тесте:
script = <<-EOH
# a PowerShell script
EOH
describe powershell(script) do
its('property') { should eq 'output' }
end
где
-
'script'должен указать скрипт Powershell для выполнения -
'matcher'— это одно изexit_status,stderr, илиstdout -
'output'проверяет вывод команды, запущенной на системе, по отношению к указанному значению вывода в тесте
Свойства
exit_status
Свойство exit_status проверяет код завершения команды:
its('exit_status') { should eq 123 }
stderr
Свойство stderr проверяет результаты команды, возвращённые в стандартной ошибке (stderr):
its('stderr') { should eq 'error' }
stdout
Свойство stdout проверяет результаты команды, возвращённые в стандартном выводе (stdout):
its('stdout') { should eq '/^1$/' }
Примеры
Следующие примеры демонстрируют, как использовать этот ресурс аудита Chef InSpec.
Получить все группы пользователя Администратор
script = <<-EOH
# find user
$user = Get-WmiObject Win32_UserAccount -filter "Name = 'Administrator'"
# get related groups
$groups = $user.GetRelated('Win32_Group') | Select-Object -Property Caption, Domain, Name, LocalAccount, SID, SIDType, Status
$groups | ConvertTo-Json
EOH
describe powershell(script) do
its('stdout') { should_not eq '' }
end
Write-Output ‘hello’
Следующий скрипт Powershell:
script = <<-EOH
Write-Output 'hello'
EOH
может быть проверен следующими способами.
Для новой строки:
describe powershell(script) do
its('stdout') { should eq "hello\r\n" }
its('stderr') { should eq '' }
end
Удаление пробелов \r\n из stdout:
describe powershell(script) do
its('strip') { should eq "hello" }
end
Без новой строки:
describe powershell("'hello' | Write-Host -NoNewLine") do
its('stdout') { should eq 'hello' }
its('stderr') { should eq '' }
end
Совпадения
Полный список доступных совпадений см. на нашей странице совпадений.
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/powershell/