Microsoft Windows PowerShell快速指南:第三部分






4.76/5 (21投票s)
本文(第三部分)的目的是向您介绍 Microsoft Windows PowerShell,并学习一些 Windows PowerShell 的基本命令。
目录
- 引言
- 如何处理对象
- Microsoft Windows PowerShell 与 Microsoft Office 系统
- Microsoft Windows PowerShell 与 Microsoft SQL Server
- 结论
- 参考
- 历史
引言
Microsoft Windows PowerShell 允许我们使用 Microsoft Office 系统 API。例如,Microsoft Office 12.0 对象库。在开始之前,我希望您阅读:
***如果您阅读了以上链接中的第一部分和第二部分,我相信这将有助于您理解当前的情况,以及我们在这部分实际要做的事情。
然而,本文(第三部分)的目的是向您介绍 Microsoft Windows PowerShell,并学习一些 Windows PowerShell 的基本命令。我们还将尝试处理各种对象;我们将处理 Microsoft Office 系统、XML 文档、Microsoft SQL Server 以及其他一些内容。
如何处理对象
在 PowerShell 中,您进行的每项操作都发生在一个对象的上下文中。我们可以创建一个 COM 对象实例。要创建 COM 对象实例,我们使用 ComObject
参数,并将其值指定为对象的 ProgID
。
语法
New-Object [-typeName] <string> [[-argumentList] <[Object]>] [<CommonParameters>]
New-Object [-comObject] <string> [-strict] [<CommonParameters>]
例如,我们想编写一个 PowerShell 脚本来打开浏览器并导航到一个自定义/用户定义的 URL(https://codeproject.org.cn/)。那么,我们如何实现呢?为此,我们的脚本将如下所示:
$objBrowser = New-Object -comobject InternetExplorer.Application
$objBrowser.navigate2("https://codeproject.org.cn/")
$objBrowser.visible = $true
Microsoft Windows PowerShell 与 Microsoft Office 系统
好了,我希望您已经掌握了一些 Windows PowerShell 的基础知识。那么,我们开始吧...
在本节中,我们将学习如何创建对象实例。我们将编写一些 Microsoft Office 系统的脚本,并处理一些其他 API。
Microsoft Word 的 PowerShell 脚本
现在让我们来玩一下,我们的需求是从 Microsoft Office Word 文档文件中读取内容,处理该文档的内容,最后保存文档。为此;Windows PowerShell 脚本将如下所示:
$objWord = New-Object -Com Word.Application
$objWord.Visible = $true
$objMissingValue = [System.Reflection.Missing]::Value
$objDocument = $objWord.Documents.Add($objMissingValue, _
$objMissingValue, $objMissingValue, $objMissingValue)
$objParaHeader = $objDocument.Paragraphs.Add($objMissingValue)
$objParaHeader.Range.Style = "Heading 1"
$objParaHeader.Range.Text = "The power of Microsoft Windows PowerShell"
$objParaHeader.Range.InsertParagraphAfter()
$objParaText = $objDocument.Paragraphs.Add($objMissingValue)
$objParaText.Range.Text = "I will not say I have failed 1000 times; _
I will say that I have discovered 1000 ways that can cause failure – Thomas Edison."
$objParaText.Range.InsertParagraphAfter()
$filename = 'C:\Script\PowerShell-Example.doc'
$objDocument.SaveAs($filename,
$objMissingValue, $objMissingValue,
$objMissingValue, $objMissingValue,
$objMissingValue, $objMissingValue,
$objMissingValue, $objMissingValue,
$objMissingValue, $objMissingValue)
##Once the script has added all of the required content the document should be closed:
$objDocument.Close()
$objWord.Quit()
Microsoft Excel 的 PowerShell 脚本
现在让我们来玩一下 Microsoft Excel,我们的需求是从 Microsoft Office Excel 电子表格中读取内容并显示。为此;Windows PowerShell 脚本将如下所示:
$objOleDbConnection = New-Object "System.Data.OleDb.OleDbConnection"
$objOleDbCommand = New-Object "System.Data.OleDb.OleDbCommand"
$objOleDbAdapter = New-Object "System.Data.OleDb.OleDbDataAdapter"
$objDataTable = New-Object "System.Data.DataTable"
$objOleDbConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;_
Data Source=C:\Script\PowerShell-Example.xls;Extended Properties=""Excel 8.0;HDR=YES"""
$objOleDbConnection.Open()
$objOleDbConnection.State
$objOleDbCommand.Connection = $objOleDbConnection
$objOleDbCommand.CommandText = "SELECT * FROM [Sheet1$]"
##set the Adapter object
$objOleDbAdapter.SelectCommand = $objOleDbCommand
##fill the objDataTable object with the results
$objOleDbAdapter.Fill($objDataTable)
##To display the “raw” contents, just enter
$objDataTable
##show the first line
$objDataTable.Rows[0].Name
## close the connection
$objOleDbConnection.Close()
下图是上述脚本的输出

Microsoft Access 的 PowerShell 脚本
目前,我们的需求是从 Microsoft Office Access 数据库中读取表格的内容并显示。为此;Windows PowerShell 脚本将如下所示:
$objOleDbConnection = New-Object "System.Data.OleDb.OleDbConnection"
$objOleDbCommand = New-Object "System.Data.OleDb.OleDbCommand"
$objOleDbAdapter = New-Object "System.Data.OleDb.OleDbDataAdapter"
$objDataTable = New-Object "System.Data.DataTable"
$objOleDbConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;_
Data Source=C:\Script\PowerShell-Example.mdb;"
$objOleDbConnection.Open()
$objOleDbConnection.State
$objOleDbCommand.Connection = $objOleDbConnection
$objOleDbCommand.CommandText = "SELECT * FROM [Example]"
##set the Adapter object
$objOleDbAdapter.SelectCommand = $objOleDbCommand
##fill the objDataTable object with the results
$objOleDbAdapter.Fill($objDataTable)
##To display the “raw” contents, just enter
$objDataTable
## close the connection
$objOleDbConnection.Close()
下图是上述脚本的输出

Microsoft Windows PowerShell 与 Microsoft SQL Server
我们可以出于多种目的使用 PowerShell 脚本。目前,我们的需求是从 Microsoft SQL Server 数据库中读取表的内容,显示内容,最后还将数据导出到 CSV 文件。为此;Windows PowerShell 脚本将如下所示:
#Connection Strings
$Database = "Northwind"
$Server = "localhost"
#Export File
$fileName = "C:\Script\SQLData.csv"
# Connect to SQL and query data, extract data to SQL Adapter
$SqlQuery = "SELECT TOP 100 * FROM [Northwind].[dbo].[Orders]"
$objSqlConnection = New-Object System.Data.SqlClient.SqlConnection
$objSqlConnection.ConnectionString = "Data Source=$Server;_
Initial Catalog=$Database;Integrated Security = True"
$objSqlCommand = New-Object System.Data.SqlClient.SqlCommand
$objSqlCommand.CommandText = $SqlQuery
$objSqlCommand.Connection = $objSqlConnection
$objSqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$objSqlAdapter.SelectCommand = $objSqlCommand
$DataSet = New-Object System.Data.DataSet
$objSqlAdapter.Fill($DataSet)
#Populate Hash Table
$objTable = $DataSet.Tables[0]
$objTable | Export-CSV $fileName
$objTable
结论
我希望这可能对您有所帮助。祝您愉快!
参考
- Microsoft 开发网络
历史
- 2010年8月19日:初始发布