<Power Shell>07查询AD角色拥有者和备份企业SQL数据库和日志

简介:

前一篇文章我们有效的利用powershell来查询和管理AD域的站点名称,这篇文章cantgis 将带给你的是关于如何查询自己所在域的角色拥有者和来使用powershell执行命令备份企业的SQL数据库和备份SQL日志文件。

这几个命令必须在powershell2.0以上才可以执行!
查询自己所在域的角色拥有者

普及知识AD(Active Directory) 中定义了五种FSMO(Flexible Single Master Operation)角色

  • Schema master(架构主控)

  • Domain naming master(域命名主控)

  • RID master(RID主控)

  • PDC master(PDC仿真器)

  • Infrastructure master(基础架构主控)


1.Schema Master
作用是修改活动目录的源数据。我们知道在活动目录里存在着各种各样的对像,比如用户、计算机、打印机等,这些对像有一系列的属性,活动目录本身就是一个数据库,对象和属性之间就好像表格一样存在着对应关系,那么这些对像和属性之间的关系是由谁来定义的,就是Schema Master,如果大家看过cantgis部署Exchange的话,就会知道Schema是可以被扩展的,但需要大家注意的是,扩展Schema一定是在Schema Master进行扩展的,在其它域控制器上或成员服务器上执行扩展程序,实际上是通过网络把数据传送到Schema上然后再在Schema Master上进行扩展的,要扩展Schema就必须具有Schema Admins组的权限才可以。

建议:在占有Schema Master的域控制器上不需要高性能,因为我们不是经常对Schema进行操作的,除非是经常会对Schema进行扩展,不过这种情况非常的少,但我们必须保证可用性,否则在安装Exchange或LCS之类的软件时会出错哦。

2.Domain Naming Master

这也是一个森林级别的角色,它的主要作用是管理森林中域的添加或者删除。如果你要在你现有森林中添加一个域或者删除一个域的话,那么就必须要和Domain Naming Master进行联系,如果Domain Naming Master处于Down机状态的话,你的添加和删除操作那上肯定会失败的。
建议:对占有Domain Naming Master的域控制器同样不需要高性能,我想没有一个网络管理员会经常在森林里添加或者删除域吧?当然高可用性是有必要的,否则就没有办法添加删除森里的域了。
3.PDC Emulator
在前面已经提过了,Windows 2000域开始,不再区分PDC还是BDC,但实际上有些操作则必须要由PDC来完成,那么这些操作在Windows 2000域里面怎么办呢?那就由PDC Emulator来完成,主要是以下操作:
⑴处理密码验证要求;
在默认情况下,Windows 2000域里的所有DC会每5分钟复制一次,但有一些情况是例外的,比如密码的修改,一般情况下,一旦密码被修改,会先被复制到PDC Emulator,然后由PDC Emulator触发一个即时更新,以保证密码的实时性,当然,实际上由于网络复制也是需要时间的,所以还是会存在一定的时间差,至于这个时间差是多少,则取决于你的网络规模和线路情况。
⑵统一域内的时间;
微软活动目录是用Kerberos协议来进行身份认证的,在默认情况下,验证方与被验证方之间的时间差不能超过5分钟,否则会被拒绝通过,微软这种设计主要是用来防止回放式攻击。所以在域内的时间必须是统一的,这个统一时间的工作就是由PDC Emulator来完成的。
⑶向域内的NT4 BDC提供复制数据源;
对于一些新建的网络,不大会存在Windows 2000域里包含NT4的BDC的现象,但是对于一些从NT4升级而来的Windows 2000域却很可能存有这种情况,这种情况下要向NT4 BDC复制,就需要PDC Emulator。
⑷统一修改组策略的模板;
⑸对Windows 2000以前的操作系统,如WIN98之类的计算机提供支持;
对于Windows 2000之前的操作系统,它们会认为自己加入的是NT4域,所以当这些机器加入到Windows 2000域时,它们会尝试联系PDC,而实际上PDC已经不存在了,所以PDC Emulator就会成为它们的联系对象!
建议:从上面的介绍里大家应该看出来了,PDC Emulator是FSMO五种角色里任务最重的,所以对于占用PDC Emulator的域控制器要保证高性能和高可用性。
4.RID Master
在Windows 2000的安全子系统中,用户的标识不取决于用户名,虽然我们在一些权限设置时用的是用户名,但实际上取决于安全主体SID,所以当两个用户的SID一样的时候,尽管他们的用户名可能不一样,但Windows的安全子系统中会把他们认为是同一个用户,这样就会产生安全问题。而在域内的用户安全SID=Domain SID+RID,那么如何避免这种情况?这就需要用到RID Master,RID Master的作用是:分配可用RID池给域内的DC和防止安全主体的SID重复。
建议:对于占有RID Master的域控制器,其实也没有必要一定要求高性能,因为我们很少会经常性的利用批处理或脚本向活动目录添加大量的用户。这个请大家视实际情况而定了,当然高可用性是必不可少的,否则就没有办法添加用户了。
5. Infrastructure Master
FSMO的五种角色中最无关紧要的可能就是这个角色了,它的主要作用就是用来更新组的成员列表,因为在活动目录中很有可能有一些用户从一个域(Domain)转移到另外一个域(Domain),那么用户的DN(DomainName)名就发生变化,这时其它域对于这个用户引用也要发生变化。这种变化就是由Infrastructure Master来完成的。

建议:其实在活动目录森林里仅仅只有一个域或者森林里所有的域控制器都是GC(全局编录)的情况下,Infrastructure Master根本不起作用,所以一般情况下对于占有Infrastructure Master的域控制器往忽略性能和可能性。


cantgis 对于这五个角色的理解
前两个条件:架构主控和域命名主控只能是一个森林角色。
其他三个:RID主控,PDC仿真器和基础设施主控是林中每个域的角色。每个域都有自己的RID主控,PDC仿真器和基础设施主控
同样我们使用 PowerShell AD模块也可以帮助我们得到我们想要得到的信息。
使用下面的代码我们当前用户就可以得到powershell林和域角色的拥有者

1
2
PS C:\Windows\system32>  [System.DirectoryServices.ActiveDirectory.Domain] ::GetCurrentDomain() |  Select-Object  *owner
PS C:\Windows\system32>  [System.DirectoryServices.ActiveDirectory.Forest] ::GetCurrentForest() |  Select-Object  *owner





使用powershell执行命令备份企业的SQL数据库和备份SQL日志文件
如今我们可以再powershell中执行SQL数据库备份
当然我们必须要利用这个类:Microsoft.SqlServer.Management.Smo.Backup
让我们来看看如何实现吧
首先们运行下面的来发现服务器的对象(Object

1
2
3
Add-Type  -AssemblyName  "Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
add-type  -AssemblyName  "Microsoft.SqlServer.SMOExtended, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
$server  New-Object  Microsoft.SqlServer.Management.Smo.Server  $env:ComputerName



我们知道了服务器对象(Object)后我们就可以执行下面的cmdlet命令来实现SQL备份。
我们选择的完全备份,最后输出的文件位于C盘的backup文件夹中.


1
2
3
4
5
6
7
8
9
$backup  New-Object  Microsoft.SqlServer.Management.Smo.Backup  -Property  @{
    Action =  [Microsoft.SqlServer.Management.Smo.BackupActionType] ::Database
    BackupSetDescription =  "Full backup of MyDB"
    BackupSetName =  "MyDB backup set"
    Database =  "MyDB"
    MediaDescription =  "Disk"
}
$backup .Devices.AddDevice( "C:\Backup\MyDB.bak" 'File' )
$backup .SqlBackup( $server )


好了下面cantgis 将继续讲一下如何利用powershell备份SQL事务日志
我们将使用SQL SMO备份日志, 枚举:BackupActionType 同样我们也可以使用上面备份数据库的值来备份日志
下面我们执行cmdlet

1
2
3
4
5
6
7
8
9
10
11
12
13
Add-Type  -AssemblyName  "Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
Add-Type  -AssemblyName  "Microsoft.SqlServer.SMOExtended, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
                                                    
$server  New-Object  Microsoft.SqlServer.Management.Smo.Server  $env:ComputerName
$backup  New-Object  Microsoft.SqlServer.Management.Smo.Backup  -Property  @{
    Action =  [Microsoft.SqlServer.Management.Smo.BackupActionType] ::Log
    BackupSetDescription =  "Transaction Log backup of MyDB"
    BackupSetName =  "MyDB TLog backup set"
    Database =  "MyDB"
    MediaDescription =  "Disk"
}
                                                    
$backup .Devices.AddDevice( "C:\Backup\MyDB-TLog.bak" 'File' )



上面的代码中我主要说一下关于Action = [Microsoft.SqlServer.Management.Smo.BackupActionType]::Log 
它是要定义一下:定义我们想要执行一个事务日志备份
好了,谢谢大家陪Cantgis 一起深入的进行powershell的使用。
请持续关注cantgis小屋




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




相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
10月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
751 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
9月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
435 6
|
存储 缓存 监控
【YashanDB数据库】数据库运行正常,日志出现大量错误metadata changed
数据库运行正常,日志出现大量错误metadata changed
|
10月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1765 5
|
11月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
1011 0
|
存储 消息中间件 Kafka
聊一聊日志背后的抽象
本文从思考日志的本质开始,一览业界对日志使用的最佳实践,然后尝试给出分布式存储场景下对日志模块的需求抽象,最后是技术探索路上个人的一点点感悟。
815 81
|
SQL 人工智能 数据库
SQL Server 2025 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 - 从本地到云端的 AI 就绪企业数据库
1071 0
SQL Server 2025 - 从本地到云端的 AI 就绪企业数据库
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
543 3
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。