前一篇文章我们有效的利用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(基础架构主控)
建议:在占有Schema Master的域控制器上不需要高性能,因为我们不是经常对Schema进行操作的,除非是经常会对Schema进行扩展,不过这种情况非常的少,但我们必须保证可用性,否则在安装Exchange或LCS之类的软件时会出错哦。
2.Domain Naming 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小屋