65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.76/5 (21投票s)

2010年8月18日

CPOL

3分钟阅读

viewsIcon

99377

downloadIcon

429

本文(第三部分)的目的是向您介绍 Microsoft Windows PowerShell,并学习一些 Windows PowerShell 的基本命令。

目录

引言

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() 

下图是上述脚本的输出

Excell.png

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() 

下图是上述脚本的输出

AccessDB.png

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日:初始发布
Microsoft Windows PowerShell 快速指南:第三部分 - CodeProject - 代码之家
© . All rights reserved.