Edit a file - computername replace

This topic contains 4 replies, has 2 voices, and was last updated by Profile photo of König Franco König Franco 1 year, 6 months ago.

  • Author
    Posts
  • #31800
    Profile photo of König Franco
    König Franco
    Participant

    hi all

    i just want to edit my oracle listener.ora file, so that when i deploy a new virtual machine, that it edit this file with the new hostname / computername, but i am not sure how i do that with powershell. i have this line in the listener.ora file:


    LISTENER =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = testpc.domain.local)(PORT = 1521))
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    )

    so how i can move now the old PC / Host Name with the new actual one from PC, with PowerShell? Is there a way?

    regards
    frank

  • #31802
    Profile photo of tommymaynard
    tommymaynard
    Member

    Here's a function that will create a computername-listerner.ora file for each computer name supplied. Let us know if you're unsure of how to use a function in PowerShell.

    Function New-OracleListenerFile {
        [CmdletBinding()]
        Param (
            [string[]]$ComputerName = 'localhost'
        )
    
        Begin {
        } # End Begin.
    
        Process {
            ForEach ($Computer in $ComputerName) {
                $FileStructure = @"
    LISTENER =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = $Computer)(PORT = 1521))
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    )
    "@
                $Path = "$Computer-listener.ora"
                New-Item -Path $Path -ItemType File | Out-Null
                Set-Content -Path $Path -Value $FileStructure
            }
        } # End Process.
    
        End {
        } # End End.
    } # End Function: New-OracleListenerFile
    
  • #31806
    Profile photo of König Franco
    König Franco
    Participant

    hi tommy

    big thx, only one question, where can i say or define the $PATH? i mean where does it write this file now? sorry, complete newbie in this powershell things! and yes i am unsure how to use a function!

    frank

  • #31809
    Profile photo of tommymaynard
    tommymaynard
    Member

    As it's written, it's going to create the file(s) in the current directory — the same location where the function is run. Copy and paste the function to your PowerShell console while the prompt is indicating you're at the root of the C:\ drive (PS C:\>), and it'll create your files there. Here's a minor modification that will create the file(s) at the root of the system drive (the C:\), unless you include the Path parameter, like so: New-OracleListenerFile -Computer server1,server2 -Path 'C:\OracleFiles'

    Function New-OracleListenerFile {
        [CmdletBinding()]
        Param (
            [string[]]$ComputerName = 'localhost',
    
            [string]$Path = $env:SystemDrive
        )
    
        Begin {
        } # End Begin.
    
        Process {
            ForEach ($Computer in $ComputerName) {
                $FileStructure = @"
    LISTENER =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = $Computer)(PORT = 1521))
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    )
    "@
                $FullPath = "$Path\$Computer-listener.ora"
                New-Item -Path $FullPath -ItemType File | Out-Null
                Set-Content -Path $FullPath -Value $FileStructure
            }
        } # End Process.
    
        End {
        } # End End.
    } # End Function: New-OracleListenerFile
    
  • #31816
    Profile photo of König Franco
    König Franco
    Participant

    hi tommy

    thank you again. this works now great. perfect

    regards
    frank

You must be logged in to reply to this topic.