簡體   English   中英

將連接變量從xml傳遞到Powershell

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM