
Issue Description
- I had to set HiddenFromAddressListsEnabled property of all mailboxes to $true or $false based on the input from a csv file.
- I ran the script but I didn’t set the expected result.
- Regardless of putting false or true in csv, everything was getting converted to True value.
Note : If you have experienced the similar issue, you can go straight to Fix Section.
input.csv Sample content

Powershell code – doesn’t work
$logMBerror = @()
#input csv file.
$csv = Import-Csv $home\desktop\input.csv
foreach($eachline in $csv){
$HiddenFromAddressListsEnabled = $eachline.HiddenFromAddressListsEnabled
$Mailbox = $eachline.Mailbox
Write-host $mailbox has HiddenFromAddressListsEnabled value set to $HiddenFromAddressListsEnabled -ForegroundColor Green
}

Reason
I looked into the reasons and found that regardless It has to do with these :
- Above code converted the values in string and that was the reason it didn’t work.
- Then i added [Boolean] in variable but it converted all false to True, It happened because powershell converts any string greater than 0 to a Boolean ‘true’.
$HiddenFromAddressListsEnabled = [Boolean]$eachline.HiddenFromAddressListsEnabled

Fix
You can use “[System.Convert]::ToBoolean()” or “[bool]::Parse()” to convert the value from string to boolean.
My testing confirmed that "[System.Convert]::ToBoolean()" works better than bool, So use this to convert the value and then use that in your code.
$HiddenFromAddressListsEnabled = [System.Convert]::ToBoolean($eachline.HiddenFromAddressListsEnabled)

Now, If you see TypeName is system.boolean and now my script works. You can use the similar to set any value, which accepts boolean value.
Powershell code – Rocks !
$csv = Import-Csv $home\desktop\input.csv
foreach($eachline in $csv){
$HiddenFromAddressListsEnabled = [System.Convert]::ToBoolean($eachline.HiddenFromAddressListsEnabled)
$Mailbox = $eachline.Mailbox
Write-host $mailbox has HiddenFromAddressListsEnabled value set to $HiddenFromAddressListsEnabled -ForegroundColor Green
}
Thank you for reading !
- Different license based on mailbox size
- Okta Advanced Server Access – Demo
- SPF has Subnet Mask for Hostname
- Teams Recording issue for a onedrive disabled user
- Discontinuation of Basic Authentication in Exchange Online
Advertisements
I found you could also use $VarName.ToBoolean($_.value)
LikeLike