在SharePoint 2010中,如何找回丢失的服务账号(Service Account)密码
背景信息:
通常在SharePoint环境中我们会使用很多的服务账号来运行各种不同的服务,尤其在企业环境中,由于权限管理条例严格,这些服务账号更是只能多不能少。面对如此多的服务账号,各个企业都会有自己管理账号的方式方法,比如使用KeyPass或者直接将密码明文文档化之类的方法等等。不过,万一的万一,你的密码丢掉了你要怎么办呢?
如果直接更换服务账号的密码,那么它所运行的服务很可能出现问题和错误。虽然SharePoint也给出了专门用于更换服务账号密码的命令方法,大大降低了风险,但不管怎么说,如果能直接把这些账号的密码找回来肯定是最安全的途径,所以值得一试。
前几天我就遇到这么一件事情,我们的一个SharePoint 2007的环境里因为时间过久,居然把所有在用的6个服务账号密码全部丢失了。。。这影响到了一系列的升级和纠错工作,于是我就开始想办法看能不能找回密码。在上网找资料的过程中,我找了这篇文章,虽然它是针对Windows Server 2008 + SharePoint 2010来写的,但还是给了我很大启示,稍后我也会写另一篇文章介绍如何在windows Server 2003+SharePoint 2007的环境中找回服务账号密码的方法。今天我们先说说这个。
解决方法:
文章的作者叫 Roger Cormier,他写了一个PowerShell脚本来专门找回服务账号的密码。
这样做有几个前提,首先你得使用IIS7并且安装有Appcmd.exe工具,因为它是找回密码的关键。
咱们先来直接看代码和中文注解
#设置变量 $AccountToRetrieve = "Domain\User" #指定你要找回密码的服务账号,这是整个代码中唯一需要你指定的内容,其它部分都可以照搬到你的环境中使用 #创建函数 Function VerifyTimerJob ($Filter)
{
$Timer = Get-SPTimerJob | ? {$_.displayname -like $Filter}
If ($Timer)
{
$timer.Delete()
}
} #开始执行 $Farm = get-spfarm | select name $Configdb = Get-SPDatabase | ? {$_.name -eq $Farm.Name.Tostring()} $ManagedAccount = get-SPManagedAccount $AccountToRetrieve #从Farm中获取你要找回密码的服务账号对象 $WebApplication = new-SPWebApplication -Name "Temp Web Application"
-url "http://tempwebapplication"
-port 80
-AuthenticationProvider (New-SPAuthenticationProvider)
-DatabaseServer $Configdb.server.displayname
-DatabaseName TempWebApp_DB
-ApplicationPool "Password Retrieval"
-ApplicationPoolAccount $ManagedAccount
-hostheader "http://tempwebapplication"
#使用上一步中得到的服务账号来创建一个新的临时Web Application,而这个服务账号也就被用作了ApplicationPool的账号。这一步中没有要求你手动填写密码是由于上一步中直接得到的是服务账号的对象,里面已经包含了密码信息,所以在创建Web Application的时候直接指定给ApplicationPoolAccount这个属性即可,免去了输入密码的步骤。 $Password = cmd.exe /c $env:windir\system32\inetsrv\appcmd.exe list apppool "Password Retrieval" /text:ProcessModel.Password
#这步是最关键的,它通过调用appcmd.exe直接获取了上一步中我们新建的web application在IIS Application Pool中的服务账号密码。坦率的说,我也不明白为什么IIS要留出这么一个看上去很不安全的方法,也许微软有自己的考虑吧。 Write-Host "Password for Account " $AccountToRetrieve " is " $Password $Filter = "Unprovisioning *" + $Webapplication.Displayname + "*" VerifyTimerJob($Filter)
Remove-SPWebApplication $WebApplication -DeleteIISSite -RemoveContentDatabases -Confirm:$False
VerifyTimerJob($Filter)
#这几步都是一些后续工作,删除相关的timerjob和临时的web application,不做详解。 $ProvisionJobs = Get-SPTimerJob | ? {$_.displayname -like "provisioning web application*"}
if ($ProvisionJobs)
{
foreach ($ProvisionJob in $ProvisionJobs)
{
$ProvisionJob.Delete()
}
}
效果图如下:
其实看过脚本之后,很容易明白其实最关键的就是那句appcmd.exe list apppool "Password Retrieval" /text:ProcessModel.Password
通过appcmd的这个方法,你可以取出所有在Application Pool中已存在的application的账号密码,并且明文输出。而这个脚本其实做的就是用你指定的服务账号来在IIS中创建一个application,进而用此命令得到其账号密码。
由于我不是iis专家,对于其安全性就不做过多评论了。
在SharePoint 2010中,如何找回丢失的服务账号(Service Account)密码的更多相关文章
- 关于SharePoint 2010中不能使用AjaxControlToolkit的解决办法
因为项目中有一个需求需要使用calendar控件,而且样式要和Reporting Service中的尽量一致,搜索了很久发现还是微软的AjaxControlToolkit提供的CalendarExte ...
- SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)
由于SharePoint 2013推出不久,并非所有的企业都会升级到SharePoint 2013的,毕竟升级不是打打补丁这么简单,更多的企业还是使用Sharepoint 2010版本的,因此本人自行 ...
- 在Sharepoint 2010中启用Session功能的说明文档
在Sharepoint 2010中启用Session功能的说明文档 开发环境:Windows 7系统,SharePoint Server 2010,Visual Studio 2010 按以下步骤进行 ...
- 在SharePoint 2010中创建网站的权限级别
转:http://www.360sps.com/Item/CreatePermissionLevels.aspx 权限级别是SharePoint 2010新增加的功能,使我们对权限的设置又提高了一个层 ...
- 在 SharePoint 2010 中访问数据
转:http://blog.banysky.net/?p=81001 数据访问的关键方法有哪些? | 使用查询类 | 使用 SPQuery | 使用 SPSiteDataQuery | 使用 LINQ ...
- 为SharePoint 2010中的FBA创建自定义登录页面
SharePoint 2010中默认的FBA登录页面非常简单,只提供了一个Asp.Net的Login控件,让用户输入用户名和密码.在大多数情况下,我们需要定制这个页面以满足一些安全需求,比如为登录页面 ...
- 在SharePoint 2010中部署RBS (转)
一.RBS(Remote BLOB Storage)简单介绍 在SharePoint的大部分企业应用案例中,SharePoint都是要承担着非常繁重的文件管理工作,这些文件类型包含了Word文档,Ex ...
- VSTO学习笔记(四)从SharePoint 2010中下载文件
原文:VSTO学习笔记(四)从SharePoint 2010中下载文件 上一次我们开发了一个简单的64位COM加载项,虽然功能很简单,但是包括了开发一个64位COM加载项的大部分过程.本次我们来给CO ...
- SharePoint 2010 中创建超链接到Pop-Up对话框
SharePoint 2010 中创建超链接到Pop-Up对话框 SharePoint 2010 推出了新式的带有阴影的弹出对话框,你感觉怎么样?我感觉倒是挺酷的.这样少打开了一个页面 ...
随机推荐
- 深入理解Web标准(网站标准)
深入理解Web标准(网站标准) 我觉得一名Web前端应该好好理解Web标准到底是什么,为什么要在我们的实际实践中遵循Web标准. 什么是Web标准.百度百科的解释是: WEB标准不是某一个标准,而 ...
- locate 最快的查找文件的命令 NB
我见过最NB的查找文件最快的命令 [root@NB data]# locate teamviewer. /data/Software/teamviewer.i686.rpm /home/ok/.loc ...
- python-opencv笔记 图像的读取和简单几何图形绘制
- CozyRSS开发记录15-获取和显示RSS内容
CozyRSS开发记录15-获取和显示RSS内容 1.内容列表 我们先给RSSContentFrame增加一个ViewModel,里面和RSS源列表一样,提供一个ObservableCollectio ...
- Puppet自动化运维-C/S架构概念(1)
1.Puppet工作模式 (1)采用C/S架构(即是server<=>client) (2)Master 会对自己形成自签名CA中心,对Agent端进行证书颁发,验证通过才允许Agent( ...
- XSL学习笔记4 XSLT模式匹配的语法
模板规则通过使用模式来匹配文档树的节点.模式指定一组条件,用于选择要处理的节点. 模式匹配的语法不光可以在<xsl:template>元素的match属性中使用,还可以在<xsl ...
- 将一个字符串中的大写字母转换成小写字母,小写字母转换成大写字母(java)
背景:刚刚学到java的String和StringBuffer类,遇到如标题所示的题. 要求:必须要用到String类的toUpperCase方法和toLowerCase方法 思路:用到StringB ...
- Git Commands Quick Notes
Fetch This command is to make sure your local repository has the same knowledge of the remote-tracki ...
- Winform中创建超链接,点击跳转网页
代码如下: System.Diagnostics.Process ie = new System.Diagnostics.Process();ie.StartInfo.FileName = " ...
- spark 问题
问题描述1 使用spark-shell ,sc.textFile("hdfs://test02.com:8020/tmp/w").count 出现如下异常: java.lang.R ...