PoshCode Logo PowerShell Code Repository

Manage ASP.NET Providers (modification of post by cglessner view diff)
diff | embed code: <script type="text/javascript" src="http://PoshCode.org/embed/1674"></script>download | new post

Manage ASP.NET MemberShip, Role and Profile Provider with PowerShell. Especially useful with SqlMembershipProvider. I use it to manage SharePoint users with form based authentication (FBA).

  1. # Manage_ASP_NET_Providers.ps1
  2. # by Chistian Glessner
  3. # http://iLoveSharePoint.com
  4.  
  5. # If you want to change the app config you have to restart PowerShell
  6. param($appConfigPath=$null)
  7.  
  8. # App config path have to be set before loading System.Web.dll
  9. [System.AppDomain]::CurrentDomain.SetData("APP_CONFIG_FILE", $appConfigPath )
  10. [void][System.Reflection.Assembly]::LoadWithPartialName("System.Web")
  11.  
  12. function global:Get-MembershipProvider($providerName=$null, [switch]$all)
  13. {    
  14.         if($all)
  15.         {
  16.                 return [System.Web.Security.Membership]::Providers
  17.         }
  18.        
  19.     if($providerName -eq $null)
  20.     {
  21.         return [System.Web.Security.Membership]::Provider
  22.     }
  23.     else
  24.     {
  25.         return [System.Web.Security.Membership]::Providers[$providerName]
  26.     }
  27. }
  28.  
  29. function global:Add-MembershipUser($login=$(throw "-login is required"), $password=$(throw "$password is required"), $mail=$(throw "-mail is required"),$question, $answer, $approved=$true)
  30. {
  31.         $provider = $input | select -First 1
  32.        
  33.         if($provider -isnot [System.Web.Security.MembershipProvider])
  34.         {
  35.                 $provider = Get-MembershipProvider
  36.         }
  37.  
  38.         $status = 0
  39.         $provider.CreateUser($login, $password, $mail, $question, $answer, $approved, $null, [ref]$status)
  40.         return [System.Web.Security.MembershipCreateStatus]$status                     
  41. }
  42.  
  43. function global:Get-MembershipUser($identifier, $maxResult=100)
  44. {
  45.         $provider = $input | select -First 1
  46.  
  47.         if($provider -isnot [System.Web.Security.MembershipProvider])
  48.         {
  49.                 $provider = Get-MembershipProvider
  50.         }
  51.                        
  52.         if($identifier -ne $null)
  53.         {              
  54.                 $name = $provider.GetUserNameByEmail($identifier)
  55.                
  56.                 if($name -ne $null){$identifier = $name}               
  57.                
  58.                 return $provider.GetUser($identifier,$false)
  59.         }
  60.  
  61.         $totalUsers = 0
  62.         $users = $provider.GetAllUsers(0,$maxResult,[ref]$totalUsers)
  63.        
  64.         $users
  65.        
  66.         if($totalUsers -gt $maxResult)
  67.         {
  68.                 throw "-maxResult limit exceeded"
  69.         }                      
  70. }
  71.  
  72. function global:Reset-MembershipUserPassword($identifier=$(throw "-identifier is required"), $questionAnswer)
  73. {
  74.         $provider = $input | select -First 1
  75.  
  76.         if($provider -isnot [System.Web.Security.MembershipProvider])
  77.         {
  78.                 $provider = Get-MembershipProvider
  79.         }
  80.        
  81.         $name = $provider.GetUserNameByEmail($identifier)
  82.                
  83.         if($name -ne $null){$identifier = $name}       
  84.        
  85.         return $provider.ResetPassword($identifier, $questionAnswer)
  86. }
  87.  
  88. function global:Get-RoleProvider($providerName=$null, [switch]$all)
  89. {    
  90.         if($all)
  91.         {
  92.                 return [System.Web.Security.Roles]::Providers
  93.         }
  94.  
  95.     if($providerName -eq $null)
  96.     {
  97.         return [System.Web.Security.Roles]::Provider
  98.     }
  99.     else
  100.     {
  101.         return [System.Web.Security.Roles]::Providers[$providerName]
  102.     }
  103. }
  104.  
  105. function global:Get-ProfileProvider($providerName=$null)
  106. {    
  107.         if($all)
  108.         {
  109.                 return [System.Web.Security.ProfileManager]::Providers
  110.         }
  111.  
  112.     if($providerName -eq $null)
  113.     {
  114.         return [System.Web.Profile.ProfileManager]::Provider
  115.     }
  116.     else
  117.     {
  118.         return [System.Web.Profile.ProfileManager]::Providers[$providerName]
  119.     }
  120. }

Submit a correction or amendment below (
click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:


Remember me