mirror of
https://github.com/inspec/inspec
synced 2024-11-26 14:40:26 +00:00
commit
c28dd8f9ec
4 changed files with 16 additions and 5 deletions
|
@ -243,6 +243,13 @@ module Inspec::Resources
|
|||
info[:startmode]
|
||||
end
|
||||
|
||||
# returns the service's user from info
|
||||
def startname
|
||||
return nil if info.nil?
|
||||
|
||||
info[:startname]
|
||||
end
|
||||
|
||||
def to_s
|
||||
"Service #{@service_name}"
|
||||
end
|
||||
|
@ -575,12 +582,13 @@ module Inspec::Resources
|
|||
# Also see: https://msdn.microsoft.com/en-us/library/aa384896(v=vs.85).aspx
|
||||
# Use the following powershell to determine the start mode
|
||||
# PS: Get-WmiObject -Class Win32_Service | Where-Object {$_.Name -eq $name -or $_.DisplayName -eq $name} | Select-Object -Prop
|
||||
# erty Name, StartMode, State, Status | ConvertTo-Json
|
||||
# erty Name, StartMode, State, Status, StartName | ConvertTo-Json
|
||||
# {
|
||||
# "Name": "Dhcp",
|
||||
# "StartMode": "Auto",
|
||||
# "State": "Running",
|
||||
# "Status": "OK"
|
||||
# "Status": "OK",
|
||||
# "StartName": "LocalSystem"
|
||||
# }
|
||||
#
|
||||
# Windows Services have the following status code:
|
||||
|
@ -593,7 +601,7 @@ module Inspec::Resources
|
|||
# - 6: Pause Pending
|
||||
# - 7: Paused
|
||||
def info(service_name)
|
||||
cmd = inspec.command("New-Object -Type PSObject | Add-Member -MemberType NoteProperty -Name Service -Value (Get-Service -Name '#{service_name}'| Select-Object -Property Name, DisplayName, Status) -PassThru | Add-Member -MemberType NoteProperty -Name WMI -Value (Get-WmiObject -Class Win32_Service | Where-Object {$_.Name -eq '#{service_name}' -or $_.DisplayName -eq '#{service_name}'} | Select-Object -Property StartMode) -PassThru | ConvertTo-Json")
|
||||
cmd = inspec.command("New-Object -Type PSObject | Add-Member -MemberType NoteProperty -Name Service -Value (Get-Service -Name '#{service_name}'| Select-Object -Property Name, DisplayName, Status) -PassThru | Add-Member -MemberType NoteProperty -Name WMI -Value (Get-WmiObject -Class Win32_Service | Where-Object {$_.Name -eq '#{service_name}' -or $_.DisplayName -eq '#{service_name}'} | Select-Object -Property StartMode, StartName) -PassThru | ConvertTo-Json")
|
||||
|
||||
# cannot rely on exit code for now, successful command returns exit code 1
|
||||
# return nil if cmd.exit_status != 0
|
||||
|
@ -614,6 +622,7 @@ module Inspec::Resources
|
|||
running: service_running?(service),
|
||||
enabled: service_enabled?(service),
|
||||
startmode: service["WMI"]["StartMode"],
|
||||
startname: service["WMI"]["StartName"],
|
||||
type: "windows",
|
||||
}
|
||||
end
|
||||
|
|
|
@ -241,7 +241,7 @@ class MockLoader
|
|||
'bash -c \'type "choco"\'' => cmd_exit_1.call,
|
||||
'(choco list --local-only --exact --include-programs --limit-output \'nssm\') -Replace "\|", "=" | ConvertFrom-StringData | ConvertTo-JSON' => cmd.call("choco-list-nssm"),
|
||||
'(choco list --local-only --exact --include-programs --limit-output \'git\') -Replace "\|", "=" | ConvertFrom-StringData | ConvertTo-JSON' => empty.call,
|
||||
"New-Object -Type PSObject | Add-Member -MemberType NoteProperty -Name Service -Value (Get-Service -Name 'dhcp'| Select-Object -Property Name, DisplayName, Status) -PassThru | Add-Member -MemberType NoteProperty -Name WMI -Value (Get-WmiObject -Class Win32_Service | Where-Object {$_.Name -eq 'dhcp' -or $_.DisplayName -eq 'dhcp'} | Select-Object -Property StartMode) -PassThru | ConvertTo-Json" => cmd.call("get-service-dhcp"),
|
||||
"New-Object -Type PSObject | Add-Member -MemberType NoteProperty -Name Service -Value (Get-Service -Name 'dhcp'| Select-Object -Property Name, DisplayName, Status) -PassThru | Add-Member -MemberType NoteProperty -Name WMI -Value (Get-WmiObject -Class Win32_Service | Where-Object {$_.Name -eq 'dhcp' -or $_.DisplayName -eq 'dhcp'} | Select-Object -Property StartMode, StartName) -PassThru | ConvertTo-Json" => cmd.call("get-service-dhcp"),
|
||||
"New-Object -Type PSObject | Add-Member -MemberType NoteProperty -Name Pip -Value (Invoke-Command -ScriptBlock {where.exe pip}) -PassThru | Add-Member -MemberType NoteProperty -Name Python -Value (Invoke-Command -ScriptBlock {where.exe python}) -PassThru | ConvertTo-Json" => cmd.call("get-windows-pip-package"),
|
||||
"Get-WindowsFeature | Where-Object {$_.Name -eq 'DHCP' -or $_.DisplayName -eq 'DHCP'} | Select-Object -Property Name,DisplayName,Description,Installed,InstallState | ConvertTo-Json" => cmd.call("get-windows-feature"),
|
||||
"Get-WindowsFeature | Where-Object {$_.Name -eq 'IIS-WebServer' -or $_.DisplayName -eq 'IIS-WebServer'} | Select-Object -Property Name,DisplayName,Description,Installed,InstallState | ConvertTo-Json" => cmd_exit_1.call("get-windows-feature-iis-webserver"),
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
"Status": 4
|
||||
},
|
||||
"WMI": {
|
||||
"StartMode": "Auto"
|
||||
"StartMode": "Auto",
|
||||
"StartName": "LocalSystem"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ describe "Inspec::Resources::Service" do
|
|||
_(resource.enabled?).must_equal true
|
||||
_(resource.running?).must_equal true
|
||||
_(resource.startmode). must_equal "Auto"
|
||||
_(resource.startname). must_equal "LocalSystem"
|
||||
_(resource.params).must_equal params
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue