Powershell管理系列(二十三)PowerShell操作之使用密文密码创建邮箱及连接powershell

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

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

方法1、手动输入密码

$password = Read-Host "Enter password" -AsSecureString
New-Mailbox -UserPrincipalName chris@contoso.com -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 chris@contoso.com -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 chris@contoso.com -Alias chris -Database "Mailbox Database 1" -Name ChrisAshton -OrganizationalUnit Users -Password $password -FirstName Chris -LastName Ashton -DisplayName "Chris Ashton" -ResetPasswordOnNextLogon $true

 

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

wKioL1Tdu_WhQ-5dAAQVuRJZ31I212.jpg

其实我们可以把这个密码转换成密文密码保存下来,供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 = "administrator@rightdo.net"      #定义管理员账户名称
$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正常连接上了。

wKioL1TdxTmxasiEAAYX7UyFDEw842.jpg

 

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

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

wKioL1TdxmmxV8RlAAJ1TPiJivA611.jpg



本文转自 zhou_ping 51CTO博客,原文链接:http://blog.51cto.com/yuntcloud/1614363,如需转载请自行联系原作者


相关文章
|
5月前
|
监控 安全 数据安全/隐私保护
|
5月前
|
Java 开发工具 数据安全/隐私保护
【Azure Developer】使用 Powershell az account get-access-token 命令获取Access Token (使用用户名+密码)
【Azure Developer】使用 Powershell az account get-access-token 命令获取Access Token (使用用户名+密码)
|
弹性计算 关系型数据库 数据库
使用ROS部署ECS+SqlServer资源并通过PowerShell操作数据库
本文介绍如何通过ROS部署ECS+RDS+SqlServer资源,以及如何通过PowerShell操作SqlServer数据库。 注意:附录模板和截图中的commandtext部分仅为演示作用,请根据需求修改后使用。
使用ROS部署ECS+SqlServer资源并通过PowerShell操作数据库