[英]Passing connection variables from xml to powershell
我正在嘗試創建一個SQL powershell腳本來檢查多個SQL服務器上的某些條件。 我要連接的服務器列表存儲在XML文件中。 這個想法是,powershell將解析XML文件並一次登錄到每個服務器。 我很難讓它正常工作。 我是PowerShell的新手,所以也許我不容易做些什么?
這是僅列出3個服務器的XML縮寫:
<Objs Version="1.1.0.1"> <Obj RefId="0">
<TN RefId="0">
<T>System.Data.DataRow</T>
<T>System.Object</T>
</TN>
<ToString>System.Data.DataRow</ToString>
<Props>
<S N="InstanceName">SERVER1\INSTANCE1</S>
<S N="DatabaseName">master</S>
</Props> </Obj> <Obj RefId="1">
<TNRef RefId="0" />
<ToString>System.Data.DataRow</ToString>
<Props>
<S N="InstanceName">SERVER1\INSTANCE2</S>
<S N="DatabaseName">master</S>
</Props> </Obj> <Obj RefId="2">
<TNRef RefId="0" />
<ToString>System.Data.DataRow</ToString>
<Props>
<S N="InstanceName">SERVER2\INSTANCE1</S>
<S N="DatabaseName">master</S>
</Props> </Obj> </Objs>
這是我遇到麻煩的部分代碼:
$filepath="\\Server\Test\SQLServerInfo.xml" [xml]$xml = Get-Content $filepath
$group = $xml.Objs.Obj.Props
# Parse the XML file
foreach ($i in $group) {
$CurrentServer = $i.S.Item(0)
$CurrentDB = $i.S.Item(1)
$CurrentServer # Show value of variable
$CurrentDB # Show value of variable
# Connect to the SQL Server
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlConnection.ConnectionString = "Server=$CurrentServer;Database=$CurrentDB;Integrated Security=SSPI"
$SqlConnection.ConnectionString
$SqlConnection.Open()
腳本無法顯示服務器未找到或無法訪問。
有趣的是,當我如上所述將變量打印到屏幕上時($ CurrentServer和$ CurrentDB),這些值是正確的。 但是,如果我將這兩行更改為:
寫主機“ $ CurrentServer”
寫主機“ $ CurrentDB”
我得到以下輸出:
System.Xml.XmlElement
System.Xml.XmlElement
此外,當我告訴腳本在分配變量后顯示$ SqlConnection.ConnectionString時,它再次顯示System.Xml.XmlElement而不是實際變量。 因此,我對如何通過XML分配這些變量一無所知。
我的問題是如何將變量放入連接字符串中。
提前致謝。
使用它作為您的連接字符串:
$SqlConnection.ConnectionString = "Server=$($CurrentServer.'#text');Database=$($CurrentDB.'#text');Integrated Security=SSPI"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.