Выполнение powershell выдает ошибку при работе через xml/BAO

Я выполняю простой файл PowerShell для создания файла

    powershell \\ns-sisci01\ServiceOperationsAutomation\BAO-shared\Dev\Programs\MSSQL\SPUpgrade\File_Creation1.ps1 ax-riscvmsql507\sql507

он принимает имя_сервера в качестве параметра, file_creation1 имеет следующий код

#------------------------------------------------------------------------------------------------------------------------------------------

param(
      [Parameter(Mandatory=$True)][string]$servername   
     )


#param([string]$servername)

$filePathsuccess = "d:\temp\success.txt"
$filePathfail = "d:\temp\fail.txt"
$fileReboot = "d:\temp\reboot.txt"
$fileoutput="\\ns-sisci01\ServiceOperationsAutomation\BAO-shared\Dev\Programs\MSSQL\SPUpgrade\output.txt"

try
    {

        # <context>
        #   <description>
        #   Checks if any previous file exists , if exists its deletes same
        #   </description>
        # </context>


        $FileName = "d:\temp\reboot.txt"
        if (Test-Path $FileName) {
          Remove-Item $FileName
        }

        $FileName = "d:\temp\fail.txt"
        if (Test-Path $FileName) {
          Remove-Item $FileName
        }


        $FileName = "d:\temp\success.txt"
        if (Test-Path $FileName) {
          Remove-Item $FileName
        }


        # <context>
        #   <description>
        #   Takes build version and check files 
        #   </description>
        # </context>


        $SqlQuery = "select SUBSTRING(CONVERT(sysname, SERVERPROPERTY('ProductVersion')),0,CHARINDEX('.',convert(sysname,SERVERPROPERTY('ProductVersion')),0))"
        $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
        $SqlConnection.ConnectionString = "Server = $Servername; Database = master; Integrated Security = SSPI;"        
        $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
        $SqlCmd.CommandText = $SqlQuery
        $SqlCmd.Connection = $SqlConnection
        $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
        $SqlAdapter.SelectCommand = $SqlCmd
        $DataSet = New-Object System.Data.DataSet
        $SqlAdapter.Fill($DataSet)
        $version = $DataSet.Tables[0].rows[0].Column1



        # <context>
        #   <description>
        #   checks build version through switch case
        #   </description>
        # </context>


        #checking version
        # 80 = SQL Server 2000    =  8.00.xxxx
        # 90 = SQL Server 2005    =  9.00.xxxx
        #100 = SQL Server 2008    = 10.00.xxxx
        #105 = SQL Server 2008 R2 = 10.50.xxxx
        #110 = SQL Server 2012    = 11.00.xxxx
        #120 = SQL Server 2014    = 12.00.xxxx
        #130 = SQL Server 2016    = 13.00.xxxx
        Write-Host $version 

        #switch case 
        switch -Exact($version)
        {
            '8'  {$version=80}
            '9'  {$version=90}
            '10' {$version=100}
            '11' {$version=110}
            '12' {$version=120}
            '13' {$version=130}
        }


        # <context>
        #   <description>
        #   checks build version through switch case
        #   </description>
        # </context>




        $filePath="C:\Program Files\Microsoft SQL Server\$version\Setup Bootstrap\Log\Summary.txt"
        Get-Content $filePath| select -First 15     
        $pattern2=Select-String -Pattern "Final result:" -CaseSensitive -Path $filePath



}

    catch

    {
        Write-Host -BackgroundColor Red -ForegroundColor White "Fail" 
            $errText =  $Error[0].ToString() 
                if ($errText.Contains("network-related")) 
            {
            Write-Host "Connection Error. Check server name, port, firewall."
        }   

            Write-Host $errText 
            continue 

    }

exit

Файл выполняется нормально из командной строки, но при запуске через xml выдает следующую ошибку

 <output>
            <line index="1">1</line>
            <line index="2">10</line>
            <line index="3">Get-Content : Cannot find path 'C:\Program Files\Microsoft SQL </line>
            <line index="4">Server\100\Setup Bootstrap\Log\Summary.txt' because it does not exist.</line>
            <line index="5">At \\ns-sisci01\ServiceOperationsAutomation\BAO-shared\Dev\Programs\MSSQL\SPUpg</line>
            <line index="6">rade\File_Creation1.ps1:115 char:3</line>
            <line index="7">+         Get-Content $filePath| select -First 15</line>
            <line index="8">+         ~~~~~~~~~~~~~~~~~~~~~</line>
            <line index="9">    + CategoryInfo          : ObjectNotFound: (C:\Program File...Log\Summary.t </line>
            <line index="10">   xt:String) [Get-Content], ItemNotFoundException</line>
            <line index="11">    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetCo </line>
            <line index="12">   ntentCommand</line>
            <line index="13"> </line>
            <line index="14">Fail</line>
            <line index="15">Cannot find path 'C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\Summary.txt' because it does not exist.</line>
          </output>

Можете ли вы помочь мне, проблема возникает в sql2008, только файл существует на месте, он выдает ошибку только в версии 2008 box rest, как 2012,2014,2016, он работает отлично

0 ответов

Другие вопросы по тегам