????
Your IP : 18.219.202.234
###########################################################################
# #
# Module Name: NetworkSwitchFeature.psm1 #
# #
# Description: Cmdlets to manage features #
# #
# Copyright (c) Microsoft Corporation. All rights reserved. #
# #
###########################################################################
import-module "$PSScriptRoot\CmdletHelpers.psm1" -Force -DisableNameChecking
function Disable-NetworkSwitchFeature() {
[CmdletBinding(SupportsShouldProcess=$true)]
param(
[Parameter(Mandatory=$true)]
[Microsoft.Management.Infrastructure.CimSession] $CimSession,
[Parameter(Mandatory=$true, ParameterSetName="FeatureNameSet")]
[int] $FeatureName,
[Parameter(Mandatory=$true, ParameterSetName="NameSet")]
[string] $Name,
[Parameter(Mandatory=$true,ParameterSetName="InstanceIdSet")]
[string] $InstanceId,
[Parameter(Mandatory=$true,
ParameterSetName="InputObjectSet",
ValueFromPipeline=$true)]
[Microsoft.Management.Infrastructure.CimInstance[]] $InputObject
)
Begin {
$cmdletName = "Disable-NetworkSwitchFeature"
$nsNamespace = Get-NetworkSwitchImplementationNamespace -CimSession $CimSession
}
Process {
if (-not $nsNamespace) { return }
if ($InputObject) {
if ($input) {
$features = $input[0]
}
else {
$features = $InputObject
}
}
else {
$features = Get-NetworkSwitchInstanceNoFilter -Namespace $nsNamespace `
-ClassName MSFT_Feature `
-CimSession $CimSession `
-CmdletName $cmdletName
if ($FeatureName) {
$features = Filter-NetworkSwitchInstance -Instances $features `
-Property FeatureName `
-Value $FeatureName `
-CmdletName $cmdletName
}
elseif ($Name) {
$features = Filter-NetworkSwitchInstance -Instances $features `
-Property Name `
-Value $Name `
-CmdletName $cmdletName `
-UseLike
}
elseif ($InstanceId) {
$features = Filter-NetworkSwitchInstance -Instances $features `
-Property InstanceId `
-Value $InstanceId `
-CmdletName $cmdletName `
-AssertNonEmpty
}
}
foreach ($feature in $features) {
if ($(CmdletShouldProcess $PSCmdlet $feature)) {
Set-NetworkSwitchInstance -InputObject $feature `
-Property @{IsEnabled = $false} `
-CimSession $CimSession `
-CmdletName $cmdletName
}
}
}
End {}
}
function Enable-NetworkSwitchFeature() {
[CmdletBinding(SupportsShouldProcess=$true)]
param(
[Parameter(Mandatory=$true)]
[Microsoft.Management.Infrastructure.CimSession] $CimSession,
[Parameter(Mandatory=$true,ParameterSetName="FeatureNameSet")]
[int] $FeatureName,
[Parameter(Mandatory=$true,ParameterSetName="NameSet")]
[string] $Name,
[Parameter(Mandatory=$true,ParameterSetName="InstanceIdSet")]
[string] $InstanceId,
[Parameter(Mandatory=$true,
ParameterSetName="InputObjectSet",
ValueFromPipeline=$true)]
[Microsoft.Management.Infrastructure.CimInstance[]] $InputObject
)
Begin {
$cmdletName = "Enable-NetworkSwitchFeature"
$nsNamespace = Get-NetworkSwitchImplementationNamespace -CimSession $CimSession
}
Process {
if (-not $nsNamespace) { return }
if ($InputObject) {
if ($input) {
$features = $input[0]
}
else {
$features = $InputObject
}
}
else {
$features = Get-NetworkSwitchInstanceNoFilter -Namespace $nsNamespace `
-ClassName MSFT_Feature `
-CimSession $CimSession `
-CmdletName $cmdletName
if ($FeatureName) {
$features = Filter-NetworkSwitchInstance -Instances $features `
-Property FeatureName `
-Value $FeatureName `
-CmdletName $cmdletName
}
elseif ($Name) {
$features = Filter-NetworkSwitchInstance -Instances $features `
-Property Name `
-Value $Name `
-CmdletName $cmdletName `
-UseLike
}
elseif ($InstanceId) {
$features = Filter-NetworkSwitchInstance -Instances $features `
-Property InstanceId `
-Value $InstanceId `
-CmdletName $cmdletName `
-AssertNonEmpty
}
}
foreach ($feature in $features) {
if ($(CmdletShouldProcess $PSCmdlet $feature)) {
Set-NetworkSwitchInstance -InputObject $feature `
-Property @{IsEnabled = $true} `
-CimSession $CimSession `
-CmdletName $cmdletName
}
}
}
End {}
}
function Get-NetworkSwitchFeature() {
[CmdletBinding(DefaultParameterSetName="NameSet")]
[OutputType([Microsoft.Management.Infrastructure.CimInstance])]
[OutputType('Microsoft.Management.Infrastructure.CimInstance#MSFT_Feature')]
param(
[Parameter(Mandatory=$true)]
[Microsoft.Management.Infrastructure.CimSession] $CimSession,
[Parameter(Mandatory=$false, ParameterSetName="NameSet")]
[string] $Name,
[Parameter(Mandatory=$true, ParameterSetName="EnabledSet")]
[switch] $Enabled,
[Parameter(Mandatory=$true, ParameterSetName="DisabledSet")]
[switch] $Disabled
)
Begin {
$cmdletName = "Get-NetworkSwitchFeature"
$nsNamespace = Get-NetworkSwitchImplementationNamespace -CimSession $CimSession
}
Process {
if (-not $nsNamespace) { return }
$featureList = Get-NetworkSwitchInstanceNoFilter -Namespace $nsNamespace `
-ClassName MSFT_Feature `
-CimSession $CimSession `
-CmdletName $cmdletName
if ($Name) {
$featureList = Filter-NetworkSwitchInstance -Instances $featureList `
-Property Name `
-Value $Name `
-CmdletName $cmdletName `
-UseLike
}
elseif ($Enabled) {
$featureList = Filter-NetworkSwitchInstance -Instances $featureList `
-Property IsEnabled `
-Value $true `
-CmdletName $cmdletName
}
elseif ($Disabled) {
$featureList = Filter-NetworkSwitchInstance -Instances $featureList `
-Property IsEnabled `
-Value $false `
-CmdletName $cmdletName
}
$featureList
}
End {}
}