本节书摘来自异步社区出版社《PowerShell V3—SQL Server 2012数据库自动化运维权威指南》一书中的第1章,第1.4节,作者:【加拿大】Donabel Santos,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.4 浏览SQL Server PowerShell层次结构
在SQL Server 2012中,原始的迷你Shell已经被废弃,SQLPS现在作为模块。从SSMS进入到PowerShell,现在是进入了一个Windows PowerShell会话,导入SQLPS模块,设置当前的安全上下文为PowerShell会话进入的源条目。DBA和开发可以从这里浏览对象架构。
1.4.1 准备
登录SSMS
1.4.2 如何做…
在这个方案中,我们将从SSMS进入PowerShell会话来浏览SQL Server PowerShell层级结构。
1.右击实例节点。
2.单击“Start PowerShell”。将进入PowerShell会话,导入SQLPS模块。窗口看起来类似一个命令提示符,有一个当前窗口的SQL Server对象源的提示。
注意窗口的开始路径。
3.输入dir。列出当前实例下可访问的所有对象的列表,对于我来说,默认实例是WIN- LLPKR5BVV6S。注意dir是cmdlet Get-ChildItem的别名。
类似于在SSMS的“Object Explorer”中,在实例节点下所看到的对象。
4.当PowerShell窗口打开的时候,浏览SQL Server PSDrive或者SQL Server数据存储,PowerShell视为条目序列。输入cd 。到当前驱动器的根目录,就是SQL Server PSDrive的路径将会改变。
5.输入dir。列出所有SQL Server PSDrive根目录下可访问的条目,将会看到类似以下的截屏。
6.关闭窗口。
7.返回SSMS,右击一个用户数据库。
8.单击“Start PowerShell”。注意,这将会进入另一个PowerShell会话,路径将指向你右击的数据库。
注意,这个窗口的开始路径不同于第二步中第一次进入PowerShell的路径。如果你从当前位置输入dir,将会看到在AdventureWorks 2008 R2数据库下面的所有条目。
如果你展开AdventureWorks2008R2数据库节点,你可以看到在SSMS的“Object Explorer”中列举的一些条目。
1.4.3 如何实现…
当PowerShell从SSMS进入时,会创建一个上下文敏感的PowerShell,它将自动导入SQLPS模块。提示符很明显显示了“Start PowerShell”菜单被单击的源对象的路径。
SQL Server 2008/2008 R2作为SQLPS迷你Shell,也作为SQLPS工具集。也可以通过从SSMS的“Object Explorer”右击一个对象,然后单击“Start PowerShell”进行启动。这个迷你Shell被设计为预加载了SQL Server扩展的封闭Shell。这个Shell意味着只能用于SQL Server,被证明是相当有限的,因为DBA和开发常常需要通过PowerShell导入插件和模块来集成SQL Server和其他系统。另一个方法是进入一个成熟的PowerShell会话,这依赖于你的PowerShell版本要么导入插件,要么导入SQLPS模块。
在SQL Server 2012中,原始的迷你Shell已经被废弃了。当你从SQL Server 2012的SSMS进入一个PowerShell会话时,它进入了一个成熟的PowerShell会话,默认导入更新的SQLPS模块。
SQL Server作为一个PowerShell驱动设备(PSDrive),可以像切换目录和文件一样切换对象。因此,提供者支持熟悉的切换目录命令,如dir或者ls。注意,这些熟悉的命令常常只是真实的cmdlet的别名,这里是Get-ChildItem。
通过SSMS进入PowerShell时,你能立刻开始浏览SQL Server PowerShell的层次结构。