今天我需要您對PowerShell的幫助。我有一個配置爲中央管理服務器(CMS)的SQL Server實例(在名爲VMDEV-APP11
的服務器上),其中我已註冊了所有Dev/Test/Prod SQL實例,並且我想使用PowerShell從SQL Server錯誤日誌中讀取SQL Server錯誤日誌我所有的服務器。我有一個查詢,它檢索我所有的SQL Server實例,但是當我將這個輸出輸入到ReadErrorLog
的調用中時,出現錯誤。如何讓powershell讀取SQL Server錯誤日誌
這是檢索我被登記在我的CMS的SQL Server實例的列表的代碼(注意,我不包括我的SQL Server 2000個實例):
Set-Location D:\MSSQL11.MSSQLSERVER\CMS
# Define functions to query SQL Server and write data to a SQL table
. ./invoke-sqlcmd2.ps1
. ./write-datatable.ps1
Invoke-sqlcmd2 -ServerInstance "VMDEV-APP11" -Database dba -Query "select s.server_name from msdb.dbo.sysmanagement_shared_registered_servers s, msdb.dbo.sysmanagement_shared_server_groups g where s.server_group_id = g.server_group_id and g.name not like '2000%'"
server_name
-----------
INF-SRV14
VMDEV-APP15
NEX-SRV48
...
這是我的想法會工作和錯誤我真正得到:
Invoke-sqlcmd2 -ServerInstance "VMDEV-APP11" -Database dba -Query "select s.server_name from msdb.dbo.sysmanagement_shared_registered_servers s, msdb.dbo.sysmanagement_shared_server_groups g where s.server_group_id = g.server_group_id and g.name not like '2000%'" | foreach-object { $_.server_name.ReadErrorLog() }
錯誤:
Method invocation failed because [System.String] does not contain a method named 'ReadErrorLog'.
At D:\MSSQL11.MSSQLSERVER\CMS\db_errorlog.ps1:38 char:284
+ ... reach-object { $_.server_name.ReadErrorLog() }
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
我suspec我需要將我的查詢返回的字符串轉換爲另一種類型的對象(服務器名稱可能?),以便讓ReadErrorLog()
調用正常工作,但我不知道該怎麼做。
有什麼建議嗎?
任何幫助將不勝感激。
肯
你從哪裏得到.ReadErrorLog()方法? –
我正嘗試使用基於此站點的ReadErrorLog():http://blogs.technet.com/b/heyscriptingguy/archive/2012/10/22/use-powershell-to-parse-sql-server-2012- error-logs.aspx – Ken