<\/td> | IIS-FTPSvc<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n Powershell equivalent: -All<\/code> for Enable-WindowsOptionalFeature<\/code>, Add-WindowsCapability<\/code> don’t use the concept of parent.<\/p>\n\n\n\nStatus<\/h3>\n\n\n\n.\/Device\/Vendor\/MSFT\/OptionalFeatures\/Enable\/<FeatureName>\/Status<\/code><\/pre>\n\n\n\nThis leaf return the status of the last enable executed command. Type is integer<\/code> support only Get<\/code>.The value are:<\/p>\n\n\n\n1<\/code>: Success<\/li>2<\/code>: Pending<\/li>16<\/code>: Action failed<\/li><\/ul>\n\n\n\nErrorCode<\/h3>\n\n\n\n.\/Device\/Vendor\/MSFT\/OptionalFeatures\/Enable\/<FeatureName>\/ErrorCode<\/code><\/pre>\n\n\n\n This leaf return the HRESULT (Win32 error) of the last enable executed command. Type is integer<\/code> and support only Get<\/code>.<\/p>\n\n\n\nExamples<\/h3>\n\n\n\nTelnet Client<\/h4>\n\n\n\nTelnet client is a simple optional feature and don’t have any parents, we can omit the EnableParent<\/code> leaf. We can use the following SyncML.<\/p>\n\n\n\n<Exec>\n <CmdID>3<\/CmdID>\n <Item>\n <Target>\n <LocURI>\n .\/Device\/Vendor\/MSFT\/OptionalFeatures\/Enable\/TelnetClient\/Enable\n <\/LocURI>\n <\/Target>\n <Meta>\n <Format xmlns="syncml:metinf">chr<\/Format>\n <Type>text\/plain<\/Type>\n <\/Meta>\n <Data><\/Data>\n <\/Item>\n<\/Exec><\/code><\/pre>\n\n\n\n.Net Framework 3.5<\/h4>\n\n\n\nThe .NET Framework 3.5 is not part of Windows 10 but many times it is required by applications. It is available as a feature on demand. Note: the ~<\/code> are part of the feature name.<\/p>\n\n\n\n<Exec>\n <CmdID>3<\/CmdID>\n <Item>\n <Target>\n <LocURI>\n .\/Device\/Vendor\/MSFT\/OptionalFeatures\/Enable\/NetFX3~~~~\/Enable\n <\/LocURI>\n <\/Target>\n <Meta>\n <Format xmlns="syncml:metinf">chr<\/Format>\n <Type>text\/plain<\/Type>\n <\/Meta>\n <Data><\/Data>\n <\/Item>\n<\/Exec><\/code><\/pre>\n\n\n\nKeyboard Filter<\/h4>\n\n\n\nClient-KeyboardFilter is part of Device Lockdown optional feature so we need to specify the EnableParentFeatures<\/code> leaf, we put it at true<\/code>.<\/p>\n\n\n\n<Exec>\n <CmdID>3<\/CmdID>\n <Item>\n <Target>\n <LocURI>\n .\/Device\/Vendor\/MSFT\/OptionalFeatures\/Enable\/Client-KeyboardFilter\/Enable\n <\/LocURI>\n <\/Target>\n <Meta>\n <Format xmlns="syncml:metinf">chr<\/Format>\n <Type>text\/plain<\/Type>\n <\/Meta>\n <Data><\/Data>\n <\/Item>\n<\/Exec>\n<Replace>\n <CmdID>7<\/CmdID>\n <Item>\n <Target>\n <LocURI>\n .\/Device\/Vendor\/MSFT\/OptionalFeatures\/Enable\/Client-KeyboardFilter\/EnableParentFeatures\n <\/LocURI>\n <\/Target>\n <Meta>\n <Format xmlns="syncml:metinf">bool<\/Format>\n <Type>text\/plain<\/Type>\n <\/Meta>\n <Data>true<\/Data>\n <\/Item>\n<\/Replace><\/code><\/pre>\n\n\n\nDisable a Feature<\/h2>\n\n\n\nIn the Disable<\/code> node we have, FeatureName<\/code> which have to be changed by the feature name, optional or on demand, then inside we have:<\/p>\n\n\n\n- Disable<\/li>
- Status<\/li>
- ErrorCode<\/li><\/ul>\n\n\n\n
The node use the following registry key to store information <\/p>\n\n\n\n HKEY_LOCAL_MACHINE\\SYSTEM\\Setup\\CSP\\OptionalFeatures\\Disable<\/code><\/pre>\n\n\n\nDisable<\/h3>\n\n\n\n.\/Device\/Vendor\/MSFT\/OptionalFeatures\/Disable\/<FeatureName>\/Disable<\/code><\/pre>\n\n\n\nThis leaf notify the device to begin the removal of the feature No notification is sent back to the MDM server after the feature have been disabled. It support Exec<\/code>.<\/p>\n\n\n\nPowerShell equivalent: Disable-WindowsOptionalFeature -online<\/code> and Remove-WindowsCapability -online<\/code><\/p>\n\n\n\nStatus<\/h3>\n\n\n\n.\/Device\/Vendor\/MSFT\/OptionalFeatures\/Disable\/<FeatureName>\/Status<\/code><\/pre>\n\n\n\nThis leaf return the status of the last enable executed command. Type is integer<\/code> support only Get<\/code>.The value are:<\/p>\n\n\n\n1<\/code>: Success<\/li>2<\/code>: Pending<\/li>16<\/code>: Action failed<\/li><\/ul>\n\n\n\nErrorCode<\/h3>\n\n\n\n.\/Device\/Vendor\/MSFT\/OptionalFeatures\/Disable\/<FeatureName>\/ErrorCode<\/code><\/pre>\n\n\n\nThis leaf return the HRESULT (Win32 error) of the last enable executed command. Type is integer<\/code> and support only Get<\/code>.<\/p>\n\n\n\nExamples<\/h3>\n\n\n\nSMB 1.0\/CIFS File Sharing Support<\/h4>\n\n\n\nSMBv1 is one of the feature that a lot of customer look to disable for security purpose. While new Windows 10, from 1709, have SMBv1 disabled by default, system installed with earlier version which have been upgraded still have SMBv1 enabled. To disable the feature completely, we are targeting the parent feature, SMB1Protocol<\/code>, to remove child features at the same time.<\/p>\n\n\n\n<Exec>\n <CmdID>3<\/CmdID>\n <Item>\n <Target>\n <LocURI>\n .\/Device\/Vendor\/MSFT\/OptionalFeatures\/Disable\/SMB1Protocol\/Disable\n <\/LocURI>\n <\/Target>\n <Meta>\n <Format xmlns="syncml:metinf">chr<\/Format>\n <Type>text\/plain<\/Type>\n <\/Meta>\n <Data><\/Data>\n <\/Item>\n<\/Exec><\/code><\/pre>\n\n\n\nInventory<\/h2>\n\n\n\nIn the Inventory<\/code> node we have:<\/p>\n\n\n\n- OnlyEnabledList<\/li>
- GetList<\/li>
- FeatureList<\/li>
- Status<\/li>
- ErrorCode<\/li><\/ul>\n\n\n\n
\n\nThis node use the following registry key to store information\n\n<\/p>\n\n\n\n HKEY_LOCAL_MACHINE\\SYSTEM\\Setup\\CSP\\OptionalFeatures\\Inventory<\/code><\/pre>\n\n\n\nOnlyEnabledList<\/h3>\n\n\n\n.\/Device\/Vendor\/MSFT\/OptionalFeatures\/Inventory\/OnlyEnabledList<\/code><\/pre>\n\n\n\nThis leaf is to configure the inventory to return. Type is Boolean<\/code> and support Get<\/code> and Replace<\/code>.<\/p>\n\n\n\nGet<\/code>: Get the current value of the setting, return true or false.<\/li>Replace<\/code>: Modify the setting<\/li><\/ul>\n\n\n\ntrue<\/code>: Return the list of enabled optional features and feature on demands. <\/li>false<\/code>: Return all features available (optional and on demands) for the device.<\/li><\/ul>\n\n\n\nThe parameter is stored in the registry, as a DWORD<\/code> value, here:<\/p>\n\n\n\nHKEY_LOCAL_MACHINE\\SYSTEM\\Setup\\CSP\\OptionalFeatures\\Inventory\\EnabledListOnly<\/code><\/pre>\n\n\n\nGetList<\/h3>\n\n\n\n.\/Device\/Vendor\/MSFT\/OptionalFeatures\/Inventory\/GetList<\/code><\/pre>\n\n\n\nThis leaf generate the list of features, it use OnlyEnabledList<\/code> setting to generate the list accordingly. It support Exec<\/code><\/p>\n\n\n\nFeatureList<\/h3>\n\n\n\n.\/Device\/Vendor\/MSFT\/OptionalFeatures\/Inventory\/FeatureList<\/code><\/pre>\n\n\n\nThis leaf return the feature list created by GetList<\/code>. If a feature is installed with Enable<\/code> and GetList<\/code> haven’t been called then the feature list won’t be up-to-date.<\/p>\n\n\n\nThe feature list separated with UTF-8 Unicode character U+F000<\/code> which is EF 80 80<\/code> in hex.<\/p>\n\n\n\nYou can decode the feature list with PowerShell using the split method.<\/p>\n\n\n\n [XML] $SyncML = Get-Content .\\SyncML.xml -Encoding UTF8\n$Data = $SyncML.SyncML.SyncBody.Results.Item.Data\n$Data.Split([regex]::Unescape("\\uF000"))<\/code><\/pre>\n\n\n\n The list is stored in the registry, as a REG_SZ value, here: <\/p>\n\n\n\n HKEY_LOCAL_MACHINE\\SYSTEM\\Setup\\CSP\\OptionalFeatures\\Inventory\\FeatureList<\/code><\/pre>\n\n\n\nUsage<\/h3>\n\n\n\nThe process to use the Inventory<\/code> node is:<\/p>\n\n\n\n- Set the type of list to All or Installed Only with
OnlyEnabledList<\/code><\/li>- Generate the list with
GetList<\/code><\/li>- Retrieve the list with
FeatureList<\/code><\/li><\/ol>\n\n\n\nStatus<\/h3>\n\n\n\n.\/Device\/Vendor\/MSFT\/OptionalFeatures\/Inventory\/Status<\/code><\/pre>\n\n\n\nThis leaf return the status of the last enable executed command. Type is integer<\/code> support only Get<\/code>.The value are:<\/p>\n\n\n\n1<\/code>: Success<\/li>2<\/code>: Pending<\/li>16<\/code>: Action failed<\/li><\/ul>\n\n\n\nErrorCode<\/h3>\n\n\n\n.\/Device\/Vendor\/MSFT\/OptionalFeatures\/Inventory\/ErrorCode<\/code><\/pre>\n\n\n\n This leaf return the HRESULT (Win32 error) of the last enable executed command. Type is integer<\/code> and support only Get<\/code>.<\/p>\n\n\n\nExample<\/h3>\n\n\n\nHere’s a SyncML example of the process to generate the list of installed feature<\/p>\n\n\n\n Set the type of list to Installed Only<\/h4>\n\n\n\n<Replace>\n <CmdID>1<\/CmdID>\n <Item>\n <Target>\n <LocURI>\n .\/Device\/Vendor\/MSFT\/OptionalFeatures\/Inventory\/OnlyEnabledList\n <\/LocURI>\n <\/Target>\n <Meta>\n <Format xmlns="syncml:metinf">bool<\/Format>\n <Type>text\/plain<\/Type>\n <\/Meta>\n <Data>true<\/Data>\n <\/Item>\n<\/Replace><\/code><\/pre>\n\n\n\nGenerate the list<\/h4>\n\n\n\n<Exec>\n <CmdID>2<\/CmdID>\n <Item>\n <Target>\n <LocURI>\n .\/Device\/Vendor\/MSFT\/OptionalFeatures\/Inventory\/GetList\n <\/LocURI>\n <\/Target>\n <Meta>\n <Format xmlns="syncml:metinf">chr<\/Format>\n <Type>text\/plain<\/Type>\n <\/Meta>\n <Data><\/Data>\n <\/Item>\n<\/Exec><\/code><\/pre>\n\n\n\nRetrieve the list<\/h4>\n\n\n\n<Get>\n <CmdID>3<\/CmdID>\n <Item>\n <Target>\n <LocURI>\n .\/Device\/Vendor\/MSFT\/OptionalFeatures\/Inventory\/FeatureList\n <\/LocURI>\n <\/Target>\n <\/Item>\n<\/Get><\/code><\/pre>\n\n\n\n<\/p>\n","protected":false},"excerpt":{"rendered":" One of the common things with Windows is to activate or deactivate while provisioning a machine are Features.Good for us…<\/p>\n","protected":false},"author":5614970,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2157457,38600,1986749,672890795],"tags":[284229,7169407,672890813,651069476],"_links":{"self":[{"href":"https:\/\/blog.n-dol.org\/wp-json\/wp\/v2\/posts\/495"}],"collection":[{"href":"https:\/\/blog.n-dol.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.n-dol.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.n-dol.org\/wp-json\/wp\/v2\/users\/5614970"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.n-dol.org\/wp-json\/wp\/v2\/comments?post=495"}],"version-history":[{"count":31,"href":"https:\/\/blog.n-dol.org\/wp-json\/wp\/v2\/posts\/495\/revisions"}],"predecessor-version":[{"id":1412,"href":"https:\/\/blog.n-dol.org\/wp-json\/wp\/v2\/posts\/495\/revisions\/1412"}],"wp:attachment":[{"href":"https:\/\/blog.n-dol.org\/wp-json\/wp\/v2\/media?parent=495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.n-dol.org\/wp-json\/wp\/v2\/categories?post=495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.n-dol.org\/wp-json\/wp\/v2\/tags?post=495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}
|