-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750

我们使用Powershell创建邮箱的时候,填写密码有两种方式,

方法1、手动输入密码

$password = Read-Host "Enter password" -AsSecureString
New-Mailbox -UserPrincipalName [email protected] -Alias chris -Database "Mailbox Database 1" -Name ChrisAshton -OrganizationalUnit Users -Password $password -FirstName Chris -LastName Ashton -DisplayName "Chris Ashton" -ResetPasswordOnNextLogon $true

方法2、使用明文密码在加密使用

New-Mailbox -UserPrincipalName [email protected] -Alias chris -Database "Mailbox Database 1" -Name ChrisAshton -OrganizationalUnit Users -Password (ConvertTo-SecureString -String P@ssw0rd -AsPlainText -Force) -FirstName Chris -LastName Ashton -DisplayName "Chris Ashton" -ResetPasswordOnNextLogon $true

方法1使用起来感觉不太方便,每次新建账号都要输入一遍密码,方法2使用起来又容易导致密码被别人看到,安全性没保障,我们怎么确保创建密码的时候不用每次输入,又保证安全性有保障。方法是有的,就是使用密文密码。

步骤1、将密码加密后保持到c:\xxx.txt。

$mysecret="Passw0rd"
$mysecret|ConvertTo-SecureString -AsPlainText -Force |ConvertFrom-SecureString|Out-File c:\xxx.txt -Encoding utf8

步骤2、将密文密码转换成powershell可以使用的格式

$securestring=(Get-Content C:\xxx.txt).ToString() | ConvertTo-SecureString
$ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToGlobalAllocUnicode($secureString)
$serverpass = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($ptr)
$Password = ConvertTo-SecureString $serverpass -AsPlainText –Force

步骤3、创建邮箱的时候调用$Password变量。

New-Mailbox -UserPrincipalName [email protected] -Alias chris -Database "Mailbox Database 1" -Name ChrisAshton -OrganizationalUnit Users -Password $password -FirstName Chris -LastName Ashton -DisplayName "Chris Ashton" -ResetPasswordOnNextLogon $true

 

我们连接powershell的时候,发现有个地方特别烦,每次都要输入用户名和密码,如下图。

Powershell管理系列(二十三)PowerShell操作之使用密文密码创建邮箱及连接powershell_第1张图片

其实我们可以把这个密码转换成密文密码保存下来,供powershell直接调用,命令如下:

$securestring=(Get-Content C:\xxx.txt).ToString() | ConvertTo-SecureString
$ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToGlobalAllocUnicode($secureString)
$serverpass = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($ptr)
$UserName = "[email protected]"      #定义管理员账户名称
$Password = ConvertTo-SecureString $serverpass -AsPlainText –Force
$cred = New-Object System.Management.Automation.PSCredential($UserName,$Password)
$session=New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://mail.rightdo.net/powershell -Authentication Basic -Credential $cred
Import-PSSession $sessionImport-PSSession $session

输入后powershell正常连接上了。

Powershell管理系列(二十三)PowerShell操作之使用密文密码创建邮箱及连接powershell_第2张图片

 

有加密同时也有解密的方法,将密文转换回明文(只能在加密时使用的计算机上解密)

$secureString = Get-Content -Path c:\xxx.txt | ConvertTo-SecureString
$ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToGlobalAllocUnicode($secureString)
$mysecret = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($ptr)
$mysecret 

Powershell管理系列(二十三)PowerShell操作之使用密文密码创建邮箱及连接powershell_第3张图片