Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

xService: cannot be used for Computer Browser Service if it is not installed #765

Open
TuemmlerKelch opened this issue Dec 7, 2023 · 4 comments
Labels
enhancement The issue is an enhancement request. good first issue The issue should be easier to fix and can be taken up by a beginner to learn to contribute on GitHub help wanted The issue is up for grabs for anyone in the community.

Comments

@TuemmlerKelch
Copy link

Problem description

I want to make sure the service "Computer Browser" is not installed on my devices.
Unfortunately there seems to be a Problem combined with the way Get-Service works (-Name also seems to look for DisplayName, if there is no hit) and the fact that Microsoft has this great combination of Services:

# Name DisplayName Description
1 Browser Computer Browser This is a "normal" service, that you can see in Services.msc
2 Bowser Browser Apparently this is the "Browser Support Driver"

As a result, Get-Service, which is called in line 52 of DSC_xServiceResource.psm1 returns the Bowser Service, rather than the Browser, which I am looking for. Regardless of Browser only being the DisplayName and not Name.
Next, it tries to execute "Get-ServiceCimInstance -ServiceName $Name", which will be empty, as this won't work for Bowser Service.
This then leads to the String-Conversion failing, as there is no return value from and thus no StartMode
($startupType = ConvertTo-StartupTypeString -StartMode $serviceCimInstance.StartMode)

Verbose logs

PowerShell DSC resource DSC_xServiceResource  failed to execute Test-TargetResource functionality with error message: The property 'StartMode' cannot be found on this object. Verify that the property exists. 
    + CategoryInfo          : InvalidOperation: (:) [], CimException
    + FullyQualifiedErrorId : ProviderOperationExecutionFailure
    + PSComputerName        : DESKTOP-55FBL3B

DSC configuration

instance of DSC_xServiceResource as $DSC_xServiceResource1ref
{
Name = "Browser";
 Ensure = "Absent";
 ModuleName = "xPSDesiredStateConfiguration";
 ResourceID = "[xService]Browser";

 ModuleVersion = "9.1.0";


 ConfigurationName = "ServiceConfig";

};
instance of OMI_ConfigurationDocument
                    {
                        Version="2.0.0";
                        MinimumCompatibleVersion = "1.0.0";
                        CompatibleVersionAdditionalProperties= {"Omi_BaseResource:ConfigurationName"};

                    };

Suggested solution

Imo, Get-Service should not fall back to DisplayName, but I don't think that will ever happen.
So, maybe a check if (get-service -name browser).Name (in this case Bowser) equals the input-value when checking the Service (in this case "Browser")

Operating system the target node is running

OsName               : Microsoft Windows 10 Pro
OsOperatingSystemSKU : 48
OsArchitecture       : 64-bit
WindowsVersion       : 2009
WindowsBuildLabEx    : 19041.1.amd64fre.vb_release.191206-1406
OsLanguage           : en-US
OsMuiLanguages       : {en-US}

PowerShell version and build the target node is running

Name                           Value                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
----                           -----                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
PSVersion                      5.1.19041.2364                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
PSEdition                      Desktop                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                                                                                                                                                                                                                                                                                                                                                             
BuildVersion                   10.0.19041.2364                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
CLRVersion                     4.0.30319.42000                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
WSManStackVersion              3.0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
PSRemotingProtocolVersion      2.3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
SerializationVersion           1.1.0.1

xPSDesiredStateConfiguration version

Name                         Version Path                                                                                                           
----                         ------- ----                                                                                                           
xPSDesiredStateConfiguration 9.1.0   C:\Program Files\WindowsPowerShell\Modules\xPSDesiredStateConfiguration\9.1.0\xPSDesiredStateConfiguration.psd1
@johlju
Copy link
Member

johlju commented Dec 7, 2023

Can confirm that the parameter -Name also looks at the DisplayName, even though there exist a separate parameter -DisplayName on the command. This seems how Get-Service command is built and we cannot prevent that. I think the best option is to add a parameter Exclude that takes a string array so when it returns wrong services we can remove them, e.g. get-service -Name browser -Exclude 'bowser' 🤔

@johlju johlju added enhancement The issue is an enhancement request. help wanted The issue is up for grabs for anyone in the community. good first issue The issue should be easier to fix and can be taken up by a beginner to learn to contribute on GitHub labels Dec 7, 2023
@johlju
Copy link
Member

johlju commented Dec 7, 2023

So, maybe a check if (get-service -name browser).Name (in this case Bowser) equals the input-value when checking the Service (in this case "Browser")

Good suggestion but I think this could possibly be a breaking change if this Get-Service bug actually make it work in another case. 🤔 So suggest adding the Exclude parameter instead.

@TuemmlerKelch
Copy link
Author

Here is a similar discussion from the PS github:
PowerShell/PowerShell#21312

@TuemmlerKelch
Copy link
Author

Sadly above issue was closed with the information that this will not be fixed and instead just be regarded as documentation bug, which I do not agree with, as this isn't even consistently working to return kernel-drivers and "bowser" is the only kernel driver being returned that way. I really had hoped there would at least be the addition of a proper paramater that does work as it should, but apparently this cannot be helped.
MicrosoftDocs/PowerShell-Docs#10966

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement The issue is an enhancement request. good first issue The issue should be easier to fix and can be taken up by a beginner to learn to contribute on GitHub help wanted The issue is up for grabs for anyone in the community.
Projects
None yet
Development

No branches or pull requests

2 participants