you can also keep blank all dedup and compression options and just add below code as a command after volume is created to set all inline + post prosess volume efficiency
param (
[parameter(Mandatory=$true, HelpMessage="Cluster IP or name")]
[string]$Cluster,
[parameter(Mandatory=$true, HelpMessage="Storage Virtual Machine name")]
[string]$VserverName,
[parameter(Mandatory=$true, HelpMessage="Volume name")]
[string]$VolumeName,
[parameter(Mandatory=$true, HelpMessage="Name of the efficiency policy ")]
[string]$EfficiencyPolicy
)
Connect-WfaCluster $Cluster
# testing volume existence. this command somehow doesn't throw exception if
# ErrorAction is 'Stop' and the volume isn't found. adding if block
$vol = Get-NcVol -Name $VolumeName -Vserver $VserverName
$sis = get-ncsis -Volume $VolumeName -Vserver $VserverName
if (!$vol)
{
throw "Volume '$VolumeName' not found on Storage Virtual Machine '$VserverName'"
}
# Prepare base command
$expression = "Set-NcSis -ErrorAction Stop -Name " + $VolumeName + " -VserverContext " + $VserverName
$expression = $expression + ' -Policy ' + $EfficiencyPolicy
$expression = $expression + ' -InlineCompression $True'
$expression = $expression + ' -Compression $True'
$expression = $expression + ' -EnableInlineDedupe $True'
# Apply SIS settings
try {
if($vol.VolumeSisAttributes.IsSisStateEnabled -ne 'True'){
Get-WFALogger -Info -message $("Enabling volume efficiency: "+ $VolumeName)
Invoke-Expression -ErrorAction Continue 'Enable-NcSis -Name $VolumeName -VserverContext $VserverName'
Get-WFALogger -Info -message $("Configuring volume efficiency: "+ $expression)
Invoke-Expression -ErrorAction Stop $expression
}else{
Get-WFALogger -Info -message $("Configuring volume efficiency: "+ $expression)
Invoke-Expression -ErrorAction Stop $expression
}
}
catch
{
$msg = "Failed to configure volume efficiency: " + $VolumeName + " Message: " + $_.Exception.Message;
throw $msg
}