Powershell 修改Office365和AD账户 推荐 原创 beanxyz 2017-07-06 14:03:35 博主文章分类:PowerShell ©著作权 文章标签 Powershell AD office365 文章分类 数字化转型 ©著作权归作者所有:来自51CTO博客作者beanxyz的原创作品,请联系作者获取转载授权,否则将追究法律责任 这段时间需要大量地修改AD用户的一些属性,例如邮件,UPN,登录名等等,以便和Office365的登录账号保持一致。写了个简单脚本进行批量修改。脚本执行的前提是在本地安装了AD和Office365必要的PS模块。AD是可以远程间接调用DC的PS模块,不过实际操作发现有些小bug,所以还是直接安装在本地比较省事,速度也快。#Import AD Module Import-Module activedirectory #Import Office 365 Module $SessiOns=Get-PSSession if ($Sessions.ComputerName -like "outlook.office365.com"){ write-host "Detecting current Office365 session, skip.." -ForegroundColor Cyan } else{ write-host "Starting new Office365 session" -ForegroundColor Cyan $UserCredential = Get-Credential Connect-MsolService -Credential $UserCredential $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection Import-PSSession $Session } #Get Primary SMTP Address function Get-PrimarySMTP(){ [CmdletBinding()] Param ( # Param1 help description [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=0)] [string[]] $users ) $pp=$null $pp=@{'name'=$null;'primarysmtp'=$null} $obj=New-Object -TypeName psobject -Property $pp $result=@() foreach($user in $users){ $info=get-aduser -Filter {name -eq $user} -Properties proxyaddresses $primarySMTPAddress = "" foreach ($address in $info.proxyAddresses) { if (($address.Length -gt 5) -and ($address.SubString(0,5) -ceq 'SMTP:') ) { $primarySMTPAddress = $address.SubString(5) break } } $objtemp=$obj | select * $objtemp.name=$info.Name $objtemp.primarysmtp=$primarySMTPAddress $result+=$objtemp } return $result } #Get AD User Informtion #$ADUsers = Get-ADUser -SearchBase "ou=mango,ou=ddb_group,ou=melbourne,dc=omnicom,dc=com,dc=au" -Properties proxyaddresses, emailaddress, displayname -Filter * Write-Host " " $uUser=Read-Host "Please input the domain name " try{ $ADUsers=get-aduser $uUser -Properties proxyaddresses, emailaddress, displayname #Change SamAccountName and UPN foreach ($ADUser in $ADUsers) { $ADUser.Name $GivenName = $ADUser.GivenName $SurName = $ADUser.Surname if (($GivenName -ne $null) -or ($SurName -ne $null)) { $newSAM = $GivenName.ToLower() + '.'+$SurName.ToLower() $oldUPN=$ADUser.UserPrincipalName $domainName= $oldUPN.Split('@')[1] $newUPN = $newSAM + '@'+$domainName write-host "Updating ADUPN: $oldupn -> $newUPN" -ForegroundColor Cyan #Change AD UPN and SamAccount Set-ADUser $ADUser -SamAccountName $newSAM -UserPrincipalName $newUPN #Change AD email $oldEmail=$ADUser.emailaddress $newEmail=$newSAM+‘@'+$oldemail.split('@')[1] write-host "Updating Email:$oldEmail -> $newEmail" -ForegroundColor Cyan set-aduser $newSAM -EmailAddress $newEmail #Change Primary SMTP $primary=Get-PrimarySMTP -users $ADUser.name | select -ExpandProperty primarysmtp Write-Host "Updating ProxyAddress.." -ForegroundColor Cyan #Write-Host "Current Primary address is $primary" -ForegroundColor Cyan $Aduser.proxyaddresses.remove("SMTP:"+$primary) $Aduser.proxyaddresses.add("smtp:"+$primary) $Aduser.proxyaddresses.add("SMTP:"+$newEmail) set-aduser $newSAM -replace @{proxyaddresses=[string[]]$ADUser.proxyaddresses} -ErrorAction Stop #Change cloud UPN. If Office365 session is not connected properly, follow commands wont' work! $oldmsolupn=Get-MsolUser -SearchString $ADUser.Name $oldmsolupn=$oldmsolupn| select -First 1 | select -ExpandProperty UserPrincipalName $newmsolupn=$newSAM+'@'+$oldmsolupn.split('@')[1] write-host "Updating MSOLUPN: $oldmsolupn -> $newmsolupn" -ForegroundColor Cyan Set-MsolUserPrincipalName -UserPrincipalName $oldmsolupn -NewUserPrincipalName $newmsolupn Write-Host "" } else{ Write-Warning "Either GivenName or Surname is Empty" } } #Confirm result Write-Host "Confirm AD Result " -ForegroundColor Cyan get-aduser $newSAM -Properties proxyaddresses,mail | select Name, SamAccountName, UserPrincipalName, proxyaddresses, mail Write-Host "Confirm O365 Result" -ForegroundColor Cyan Get-MsolUser -SearchString $ADUser.Name | select UserPrincipalName }catch [Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException]{ write-host "AD User can not found" -ForegroundColor red }catch [Microsoft.ActiveDirectory.Management.ADException]{ Write-Host "User vlaue can't be updated or the specified value already exists" -ForegroundColor Red }修改其实都满简单地,我的脚本里面也没有写太多容错处理。修改完了之后,windows用户可能存在Profile和注册表对不上号的问题,因此还需要修改一些注册表,具体操作参考 http://beanxyz.blog.51cto.com/5570417/1930788 赞 收藏 评论 分享 举报 上一篇:Django 前端向后台post提交数据 下一篇:Django 路由系统简述 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 关于Microsoft 365 管理员已关闭Office安装的问题处理 今天有Microsoft 365用户反馈说无法安装Office,报错信息为你的管理员已关闭 office 安装。有关如何获得组织中的 office,请联系你的管理员以了解详细信息。使用管理员用户登录到Microsoft 365管理中心,在设置中找到组织设置,点击Microsoft 365 安装选项,点击“安装”选项卡,检查了下,发现用户可以安装的Microsoft 365应用没有勾选勾选之后,点击 Office 用户登录 报错信息 【Powershell】在 PowerShell 数组中添加和删除项 在 PowerShell 数组中和删除项是一个可能会导致一些意外的报错,这里我把可用的办法总结一下。问题:创建一个数组,我们将记下 System.Array 类型:$Fruits = "Apple","Pear","Banana","Orange"$Fruits.GetType()但是,如果我们尝试向数组或删除项目,则会出现“集合大小固定”的错误$Fruits.Add("Kiwi")$ 数组 powershell fixed error 夏明亮 PowerShell监测AD账号锁定并发送到钉钉消息 尝试过将监测脚本作为服务运行的方式,也尝试了通过 监测EventLog 4740的方式(遍历所有DC导致脚本效率低),详见 监测4740EventLog。两种方式都不能满意。于是,继续在原始脚本上进行优化。脚本优化的目标两个: 1. 定时任务间隔可以尽量缩小。 2.用户账号锁定后,只收取一次消息通知。原脚本:Import-Module activedirectory$Users = S AD账号锁定 本地AD与Office365进行账户同步 研究Office365已经有一段时间了,只是一直没有静下心来整理相关的内容。最近忙里偷闲,悄悄的整理了一些,暂且Share出来,就当是自己给自己的一种勉励吧!环境描述: 本地Active Directory:fashionba.intra Office 365账户:fashionba.o 服务器 下载工具 DirSync Office365 AD同步 利用powershell管理office365 今天在公司的生产环境中有个需要用到powershell批量检查office365用户的操作,所以在这边顺便记录的powershell连接office365的过程: 在连接之前,需要安装两个工具:1、Office 365 Sign-In Assistanthttp://www.microsoft.com/en-us/download/details.aspx?id=281772. Offi powershell管理office36 Powershell RESTAPI 访问Office365 豆子之前对Office365的用户操作一般是通过远程的加载模块,然后创建一个session连接。比如$cred = Get-Credential Import-Module MSOnlineSet-ExecutionPolicy remotesignedConnect-MsolService -Credential $cr office rest powershell Office365 PowerShell打开邮箱审计功能 最近总公司要求Office365需要在所有的邮箱上面打开审计功能。这个功能没法通过图形界面操作,只能通过powershell脚本实现。微软提供了一个官方的脚本,不过里面有个小bughttps://technet.microsoft.com/en-us/library/dn879651.aspx#step2 我发现Office365的一个bug:我们有个别用户同时存在一个AD同步的账户,也有clou auditing mailbox securescore PowerShell 脚本通知Office365 同步错误 豆子公司是上市公司,每年都需要审计。因此离职用户的信息不能删掉,只能disable掉。有的时候,桌面需要把一个离职用户的邮件重新添加到另一个用户的别名,以便继续接收邮件。但是Office365默认配置情况下一个已经disable掉的用户,不管怎么改他都不会继续同步,这样造成的结果就是桌面经常修改的顺序不对,造成了本地的AD已经改了,但是修改的东西不会同步到office365,或者直接office3 powershell office365 dirsync PowerShell 审计Office365 邮箱操作日志 Office365里面,我们可以Get-MessageTrace来追踪邮件收发的记录,但是针对具体某一个邮箱,如何获取相关操作的信息呢,比如谁删除,移动了某些邮件?尤其是一些邮箱可能多人都有权限访问,然后某个邮件找不着的情况下,如何来追踪操作日志?微软官方提供了一个文档和PowerShell进行相关的操作。https://docs.microsoft.com/en-us/office365/tro office365 powershell auditng mailbox 【Office365使用系列】Office365试用申请 Office365作为微软的发布新一款基于微软公有云平台服务。个人感觉它还是有市场和后续发力。故对此款产品相关功能和技术进行全方面的研究,在此blog进行集中归档和技术分享。目前微软的试用期限是一个月,如果要提请试用的话,可以访问官方网站 http://www.microsoft.com/china/office365/ 在跳转的页面的选择中,选择想试用的版本,在 试用 office365 Office365—Exchange管理2—连接Exchange PowerShell Exchange的管理,很多时候都是依赖于PowerShell来进行的。但是对于Exchange Online怎么来使用PowerShell呢?下面我们来看下具体连接方法。1. 首先我们来打开Windows本地的PowerShell,让其来连接到远程的Exchange Online PowerShell。2. 连接到Office365 Exchange Online PowerShell首先输入连 Exchange 链接 Office365 申请临时Azure和Office365账户注意事项 申请临时Azure和Office365账户注意事项说到Office365的功能及应用,相信大家都非常熟悉了,所以就不多说了,今天我们主要说说申请Office365测试账户,登陆后无订阅的解决方法;我们是Azure和Office365在同一个账户域下使用的是同一套AAD(Azure Active Directory),这样一来的话,我们只需要注册一个账户,比如,我们如果想申请临时30天使用的Offi Office Azure 申请临时 Powershell从office365上 删除日历记录 一个用户给我抱怨他的日历上每周一早上10点,同样的会议邀请会重复900多次,过多的记录(几万条重复的)导致他的Outlook根本无法打开日历,一开就死机,问我是否能够删除这些记录。豆子稍微搜索了一下,发现从OWA的界面里面只能一条条手动删除,Outlook又打不开,那么怎么才能快速的批删除对应的记录呢?找找看Powershell是否有对应的命令,很幸运的是我找到了,这个命令就是search-mai powershell delete calendar office365 Office365 Exchange Hybrid No.21 Office365 MFA 先说下MFA是个什么鬼,MFA是多重身份验证的简称,那么为什么要用MFA呢?MFA可以说是企业信息安全的最后一把锁了,通俗一点讲就是万一用户的密码被破解了,通过了ADFS的验证就可以直接登录Office365了,登录Office365后,企业内部的资料100%会泄露,MFA的作用就在即使用户的账号密码被破解了,也通过了ADFS的验证了,但是最后还需要该用户提前预留手机号的短信(或语音等其他验证)验 Office365 MFA python office365 # 实现Python与Office365的集成## 1.整体流程下面是实现Python与Office365集成的整体流程,包括安装必要的库、认证过程以及发送邮件的具体步骤。```mermaiderDiagram 数据库 ||--o Python : 包含Python代码 Python ||--o Office365 : 包含Office365 API```## Python python 发送邮件 office365 linux Office 365是微软公司推出的一套办公软件服务,为企业用户提供了更便捷、高效的办公解决方案。而Linux操作系统作为一种开源的操作系统,其用户群体也是非常庞大的。那么,如何在Linux系统上使用Office 365呢?本文将为大家介绍一些关于在Linux系统上使用Office 365的方法。首先,对于想要在Linux系统上使用Office 365的用户来说,最基本的方法就是通过网页版的O Office x系统 应用程序 powershell 批量获取office365用户邮箱使用容量 公司用的office365的ExcahngeOnline,云端默认有50G容量。容量会很快就要到达极限了,会方便查看那些用户快到使用极限,那肯定要用powershell.附:官方文档,如何用powershell连接到ExchangeOnlinehttps://docs.microsoft.com/zh-cn/powershell/exchange/exchange-eop/connect-to-e powershell office365 【office365使用系列】添加自有域名至office365 1.原有注册完成后,实际上已经可以创建并是用XXXX.onmicrosoft.com的用户,此时可以正常对收发邮件,使用lync等。2.实际应用中,企业通常是要使用自己的域名,在此以office365plus.com.cn作为示例。当然这个自有域名需要自己向域名注册商申请,国内的话,比如说万网,新网等。这些工作都应该在添加之前准备好。cn域名是要求备案或者非网站用途承诺书之类,自己打万网或新网 office365 添加自有域名 office 365和office office365和office2016哪个好 office是美国微软公司开发的一套在全球都家喻户晓的办公软件,目前最新版的office是2019,不过微软后面发布了365版本。那么到底这两个版本有什么区别呢?哪个版本好呢?下面就来看看吧。 office2016和office365最核心也是最简单的区别office365是一个网络服务,office2016是一个本地应用;推出office 365,意味着微软打算将 office 软件变成一种服务 office 365和office office2016 office365 版本区别 Word office365 包括python office365都包括什么 Microsoft 微软 “Microsoft 365″ is the new name for Microsoft’s Office 365 subscription service. It includes everything Office 365 included—and more. Subscribe for access to Microsoft Offi office365 包括python 网络 大数据 微软 人工智能