这里是您需要的脚本。 请注意我使用 ↵ 来指示应在此按 enter 键。 仅按 enter 键时你来该符号,如果您希望它能正常工作 (您可以将复制的 HTML 使用符号 & crarr ; 实体):
$reason = Read-Host 'Reason are you logging on'↵
$reason.replace("'","''")↵
这两行提示有人为他们正在登录到服务器的原因 — — 这一点是相当重要的跟踪。 替换功能会将任何单引号替换使用两个单引号,确保我们稍后构建的 SQL 语句将正常工作。 这并不被为了故意 SQL 注入式攻击的防范。 毕竟,我们谈论受信任的管理员,正确吗?
此线将检索操作系统的信息:
$os = Get WmiInfo Win32_OperatingSystem↵
在这里重要的数据是服务器的名称和其当前的服务包版本。 您可能还需要 BuildNumber 属性,告诉您您正在处理的 Windows 版本。
此线加载的一部分。负责处理数据库的.NET 框架:
[assembly.reflection]::loadwithpartialname ('System.Data ') ↵
这些行创建新的数据库连接:
$conn = New-Object System.Data.SqlClient.SqlConnection↵ $conn.ConnectionString = "Data Source=SQLSERVER;Initial Catalog=SYSINFO;Integrated Security=SSPI;"↵
如果您不使用 SQL Server 2008,连接字符串可能会有点不同 (访问ConnectionStrings.com来查找各种不同的数据库的连接字符串示例):
$conn.open () ↵
现在该连接是打开并可供使用。
这两条线创建是我将使用 SQL 服务器发送查询的 SQL 命令。 我已经设置其连接属性设置为"打开",以便 Windows PowerShell 已实际发送命令的方式:
$cmd = New-Object System.Data.SqlClient.SqlCommand↵ $cmd.connection = $conn↵
这所有辛勤的工作。 它创建一个 SQL"插入"查询到数据库表中插入新行。 请注意我使用 – f 格式设置运算符将四条信息插入到查询。 信息被插入 {x} 占位符,它提供如下操作员的逗号分隔列表中的顺序相同:
$cmd.commandtext = "INSERT INTO servers (servername,username,spversion,reason) VALUES('{0}','{1}','{2}','{3}')" -f
$os.__SERVER,$env.username,$os.servicepackmajorversion,$reason↵
现在我会执行查询,并关闭数据库连接:
$cmd.executenonquery()↵ $conn.close()↵
请确保您关闭该连接或你得打你一顿头的后面的数据库管理员。 您将看到对ConnectionStrings.com,您可以访问大量的数据库。
如果您使用 SQL Server 以外,你得改改"OleDb"对象名称"SqlClient"部分。 此外,它已不推荐使用基于文件的数据库访问像。 为之一,以获取驱动程序,你得要上安装,访问您的服务器,这将是一个可怕的想法。 另一种,这些数据库的性能达不到您将需要为此工作好的水平。










