Hash table that includes SQL Server name, SQL port, and SQL instanceHow to run a PowerShell scriptHow do I get only directories using Get-ChildItem?Executing an EXE file using a PowerShell scriptWhich snapins do I need to run sql server powershell?Cannot run Invoke-Sqlcmd in a PS1 file but can on the consoleTrouble connecting to localdb via SQLCMD in PowerShell - what is server instance name?Error passing variable SQL instance name into Invoke-SQLcmdPowershell T-SQL Update Statement Error in FunctionSQL Powershell Error: Invoke-Sqlcmd : The term 'Invoke-Sqlcmd' is not recognized as the name of a cmdletPowershell Script import csv on a SQL Server

Is it acceptable for a professor to tell male students to not think that they are smarter than female students?

Why didn't Miles's spider sense work before?

How dangerous is XSS?

Plagiarism or not?

In 'Revenger,' what does 'cove' come from?

Venezuelan girlfriend wants to travel the USA to be with me. What is the process?

Can we compute the area of a quadrilateral with one right angle when we only know the lengths of any three sides?

How would I stat a creature to be immune to everything but the Magic Missile spell? (just for fun)

Little known, relatively unlikely, but scientifically plausible, apocalyptic (or near apocalyptic) events

Im going to France and my passport expires June 19th

ssTTsSTtRrriinInnnnNNNIiinngg

How do I deal with an unproductive colleague in a small company?

Detention in 1997

Is there a hemisphere-neutral way of specifying a season?

Why was the shrinking from 8″ made only to 5.25″ and not smaller (4″ or less)?

I would say: "You are another teacher", but she is a woman and I am a man

Can a virus destroy the BIOS of a modern computer?

How to compactly explain secondary and tertiary characters without resorting to stereotypes?

Reverse dictionary where values are lists

Why is consensus so controversial in Britain?

What method can I use to design a dungeon difficult enough that the PCs can't make it through without killing them?

How to Recreate this in LaTeX? (Unsure What the Notation is Called)

How do conventional missiles fly?

What about the virus in 12 Monkeys?



Hash table that includes SQL Server name, SQL port, and SQL instance


How to run a PowerShell scriptHow do I get only directories using Get-ChildItem?Executing an EXE file using a PowerShell scriptWhich snapins do I need to run sql server powershell?Cannot run Invoke-Sqlcmd in a PS1 file but can on the consoleTrouble connecting to localdb via SQLCMD in PowerShell - what is server instance name?Error passing variable SQL instance name into Invoke-SQLcmdPowershell T-SQL Update Statement Error in FunctionSQL Powershell Error: Invoke-Sqlcmd : The term 'Invoke-Sqlcmd' is not recognized as the name of a cmdletPowershell Script import csv on a SQL Server













0















I'm running a lot of invoke-sqlcmd commands, all with a different server name, different port, and a different instance.



From what I've read a hash table is the way to go



  1. Can a hash table be a separate file?

  2. How do I create a table that includes server name, port number, and instance?

  3. How do I incorporate that into the script?









share|improve this question
























  • i would use an array/arraylist/generic.list as appropriate ... and put custom objects into that. then you can simply iterate thru the collection.

    – Lee_Dailey
    Mar 8 at 22:45











  • Can you provide an example?

    – user770022
    Mar 8 at 22:46











  • if you have a CSV file with the info in it, you can use Import-CSV and get a collection of objects. the header will be the property names, and the other rows will be the objects with each column a property of that object. that lets you use $Item.ComputerName to get the computer name, $Item.Port to get hte port info, etc. ///// plus, you can easily create/save/load/edit those items. ///// take a look at Get-Help Import-Csv -Examples for some nifty examples. [grin]

    – Lee_Dailey
    Mar 8 at 23:01
















0















I'm running a lot of invoke-sqlcmd commands, all with a different server name, different port, and a different instance.



From what I've read a hash table is the way to go



  1. Can a hash table be a separate file?

  2. How do I create a table that includes server name, port number, and instance?

  3. How do I incorporate that into the script?









share|improve this question
























  • i would use an array/arraylist/generic.list as appropriate ... and put custom objects into that. then you can simply iterate thru the collection.

    – Lee_Dailey
    Mar 8 at 22:45











  • Can you provide an example?

    – user770022
    Mar 8 at 22:46











  • if you have a CSV file with the info in it, you can use Import-CSV and get a collection of objects. the header will be the property names, and the other rows will be the objects with each column a property of that object. that lets you use $Item.ComputerName to get the computer name, $Item.Port to get hte port info, etc. ///// plus, you can easily create/save/load/edit those items. ///// take a look at Get-Help Import-Csv -Examples for some nifty examples. [grin]

    – Lee_Dailey
    Mar 8 at 23:01














0












0








0








I'm running a lot of invoke-sqlcmd commands, all with a different server name, different port, and a different instance.



From what I've read a hash table is the way to go



  1. Can a hash table be a separate file?

  2. How do I create a table that includes server name, port number, and instance?

  3. How do I incorporate that into the script?









share|improve this question
















I'm running a lot of invoke-sqlcmd commands, all with a different server name, different port, and a different instance.



From what I've read a hash table is the way to go



  1. Can a hash table be a separate file?

  2. How do I create a table that includes server name, port number, and instance?

  3. How do I incorporate that into the script?






powershell






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 9 at 7:09









marc_s

584k13011241270




584k13011241270










asked Mar 8 at 22:37









user770022user770022

1,182133757




1,182133757












  • i would use an array/arraylist/generic.list as appropriate ... and put custom objects into that. then you can simply iterate thru the collection.

    – Lee_Dailey
    Mar 8 at 22:45











  • Can you provide an example?

    – user770022
    Mar 8 at 22:46











  • if you have a CSV file with the info in it, you can use Import-CSV and get a collection of objects. the header will be the property names, and the other rows will be the objects with each column a property of that object. that lets you use $Item.ComputerName to get the computer name, $Item.Port to get hte port info, etc. ///// plus, you can easily create/save/load/edit those items. ///// take a look at Get-Help Import-Csv -Examples for some nifty examples. [grin]

    – Lee_Dailey
    Mar 8 at 23:01


















  • i would use an array/arraylist/generic.list as appropriate ... and put custom objects into that. then you can simply iterate thru the collection.

    – Lee_Dailey
    Mar 8 at 22:45











  • Can you provide an example?

    – user770022
    Mar 8 at 22:46











  • if you have a CSV file with the info in it, you can use Import-CSV and get a collection of objects. the header will be the property names, and the other rows will be the objects with each column a property of that object. that lets you use $Item.ComputerName to get the computer name, $Item.Port to get hte port info, etc. ///// plus, you can easily create/save/load/edit those items. ///// take a look at Get-Help Import-Csv -Examples for some nifty examples. [grin]

    – Lee_Dailey
    Mar 8 at 23:01

















i would use an array/arraylist/generic.list as appropriate ... and put custom objects into that. then you can simply iterate thru the collection.

– Lee_Dailey
Mar 8 at 22:45





i would use an array/arraylist/generic.list as appropriate ... and put custom objects into that. then you can simply iterate thru the collection.

– Lee_Dailey
Mar 8 at 22:45













Can you provide an example?

– user770022
Mar 8 at 22:46





Can you provide an example?

– user770022
Mar 8 at 22:46













if you have a CSV file with the info in it, you can use Import-CSV and get a collection of objects. the header will be the property names, and the other rows will be the objects with each column a property of that object. that lets you use $Item.ComputerName to get the computer name, $Item.Port to get hte port info, etc. ///// plus, you can easily create/save/load/edit those items. ///// take a look at Get-Help Import-Csv -Examples for some nifty examples. [grin]

– Lee_Dailey
Mar 8 at 23:01






if you have a CSV file with the info in it, you can use Import-CSV and get a collection of objects. the header will be the property names, and the other rows will be the objects with each column a property of that object. that lets you use $Item.ComputerName to get the computer name, $Item.Port to get hte port info, etc. ///// plus, you can easily create/save/load/edit those items. ///// take a look at Get-Help Import-Csv -Examples for some nifty examples. [grin]

– Lee_Dailey
Mar 8 at 23:01













1 Answer
1






active

oldest

votes


















0














A PS Custom object is well-suited for containing your data. Consider



$o = [PSCustomObject]@
'Name' = 'dev'
'Server' = 'Server1'
'Instance' = 'dev'
'Port' = '50000'



Now the $o object contains NoteProperty members that contain data. Accessing is simple enough:



$o.server+$o.instance+','+$o.port
Server1dev,50000


Hashtables in Powershell are created with built-in syntax: $myHashTable = @.



A quick demo how to work with hash tables is in order. Let's populate a list of aforementioned custom objects first. Like so,



# Empty array
$l = @()
# Add some servers
$l += [PSCustomObject]@
'Name' = 'dev'
'Server' = 'Server1'
'Instance' = 'dev'
'Port' = '50000'

$l += [PSCustomObject]@
'Name' = 'test'
'Server' = 'Server1'
'Instance' = 'test'
'Port' = '50001'

$l += [PSCustomObject]@
'Name' = 'qa'
'Server' = 'Server1'
'Instance' = 'qa'
'Port' = '50002'

$l += [PSCustomObject]@
'Name' = 'prod'
'Server' = 'Server2'
'Instance' = 'prod'
'Port' = '50000'



Now there's a list of server objects, but it's hard to access a specific one. Server's index in the list must be known, or the list otherwise searched.



Consider a hash table: its contents can be retrieved based on a key. Let's use Name property as the key and add the servers into a hash table:



# Empty hashtable
$ht = @
# Iterate server list and add each PSObject into the hasthtable
$l | % $ht.add($_.name, $_ )
# Print results
$ht
Name Value
---- -----
qa @Name=qa; Server=Server1; Instance=qa; Port=50002
dev @Name=dev; Server=Server1; Instance=dev; Port=50000
prod @Name=prod; Server=Server2; Instance=prod; Port=50000
test @Name=test; Server=Server1; Instance=test; Port=50001

#Access the prod server object
$ht.prod

Name Server Instance Port
---- ------ -------- ----
prod Server2 prod 50000

# Get production's port
$ht.prod.port
50000

# Generate a connection string to prod
"Server=0,1" -f $($ht.prod.server+$ht.prod.instance), $ht.prod.port
Server=Server2prod,50000


As for how to use file-based hashtable, look up Export-Clixml and Import-Clixml.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55071966%2fhash-table-that-includes-sql-server-name-sql-port-and-sql-instance%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    A PS Custom object is well-suited for containing your data. Consider



    $o = [PSCustomObject]@
    'Name' = 'dev'
    'Server' = 'Server1'
    'Instance' = 'dev'
    'Port' = '50000'



    Now the $o object contains NoteProperty members that contain data. Accessing is simple enough:



    $o.server+$o.instance+','+$o.port
    Server1dev,50000


    Hashtables in Powershell are created with built-in syntax: $myHashTable = @.



    A quick demo how to work with hash tables is in order. Let's populate a list of aforementioned custom objects first. Like so,



    # Empty array
    $l = @()
    # Add some servers
    $l += [PSCustomObject]@
    'Name' = 'dev'
    'Server' = 'Server1'
    'Instance' = 'dev'
    'Port' = '50000'

    $l += [PSCustomObject]@
    'Name' = 'test'
    'Server' = 'Server1'
    'Instance' = 'test'
    'Port' = '50001'

    $l += [PSCustomObject]@
    'Name' = 'qa'
    'Server' = 'Server1'
    'Instance' = 'qa'
    'Port' = '50002'

    $l += [PSCustomObject]@
    'Name' = 'prod'
    'Server' = 'Server2'
    'Instance' = 'prod'
    'Port' = '50000'



    Now there's a list of server objects, but it's hard to access a specific one. Server's index in the list must be known, or the list otherwise searched.



    Consider a hash table: its contents can be retrieved based on a key. Let's use Name property as the key and add the servers into a hash table:



    # Empty hashtable
    $ht = @
    # Iterate server list and add each PSObject into the hasthtable
    $l | % $ht.add($_.name, $_ )
    # Print results
    $ht
    Name Value
    ---- -----
    qa @Name=qa; Server=Server1; Instance=qa; Port=50002
    dev @Name=dev; Server=Server1; Instance=dev; Port=50000
    prod @Name=prod; Server=Server2; Instance=prod; Port=50000
    test @Name=test; Server=Server1; Instance=test; Port=50001

    #Access the prod server object
    $ht.prod

    Name Server Instance Port
    ---- ------ -------- ----
    prod Server2 prod 50000

    # Get production's port
    $ht.prod.port
    50000

    # Generate a connection string to prod
    "Server=0,1" -f $($ht.prod.server+$ht.prod.instance), $ht.prod.port
    Server=Server2prod,50000


    As for how to use file-based hashtable, look up Export-Clixml and Import-Clixml.






    share|improve this answer



























      0














      A PS Custom object is well-suited for containing your data. Consider



      $o = [PSCustomObject]@
      'Name' = 'dev'
      'Server' = 'Server1'
      'Instance' = 'dev'
      'Port' = '50000'



      Now the $o object contains NoteProperty members that contain data. Accessing is simple enough:



      $o.server+$o.instance+','+$o.port
      Server1dev,50000


      Hashtables in Powershell are created with built-in syntax: $myHashTable = @.



      A quick demo how to work with hash tables is in order. Let's populate a list of aforementioned custom objects first. Like so,



      # Empty array
      $l = @()
      # Add some servers
      $l += [PSCustomObject]@
      'Name' = 'dev'
      'Server' = 'Server1'
      'Instance' = 'dev'
      'Port' = '50000'

      $l += [PSCustomObject]@
      'Name' = 'test'
      'Server' = 'Server1'
      'Instance' = 'test'
      'Port' = '50001'

      $l += [PSCustomObject]@
      'Name' = 'qa'
      'Server' = 'Server1'
      'Instance' = 'qa'
      'Port' = '50002'

      $l += [PSCustomObject]@
      'Name' = 'prod'
      'Server' = 'Server2'
      'Instance' = 'prod'
      'Port' = '50000'



      Now there's a list of server objects, but it's hard to access a specific one. Server's index in the list must be known, or the list otherwise searched.



      Consider a hash table: its contents can be retrieved based on a key. Let's use Name property as the key and add the servers into a hash table:



      # Empty hashtable
      $ht = @
      # Iterate server list and add each PSObject into the hasthtable
      $l | % $ht.add($_.name, $_ )
      # Print results
      $ht
      Name Value
      ---- -----
      qa @Name=qa; Server=Server1; Instance=qa; Port=50002
      dev @Name=dev; Server=Server1; Instance=dev; Port=50000
      prod @Name=prod; Server=Server2; Instance=prod; Port=50000
      test @Name=test; Server=Server1; Instance=test; Port=50001

      #Access the prod server object
      $ht.prod

      Name Server Instance Port
      ---- ------ -------- ----
      prod Server2 prod 50000

      # Get production's port
      $ht.prod.port
      50000

      # Generate a connection string to prod
      "Server=0,1" -f $($ht.prod.server+$ht.prod.instance), $ht.prod.port
      Server=Server2prod,50000


      As for how to use file-based hashtable, look up Export-Clixml and Import-Clixml.






      share|improve this answer

























        0












        0








        0







        A PS Custom object is well-suited for containing your data. Consider



        $o = [PSCustomObject]@
        'Name' = 'dev'
        'Server' = 'Server1'
        'Instance' = 'dev'
        'Port' = '50000'



        Now the $o object contains NoteProperty members that contain data. Accessing is simple enough:



        $o.server+$o.instance+','+$o.port
        Server1dev,50000


        Hashtables in Powershell are created with built-in syntax: $myHashTable = @.



        A quick demo how to work with hash tables is in order. Let's populate a list of aforementioned custom objects first. Like so,



        # Empty array
        $l = @()
        # Add some servers
        $l += [PSCustomObject]@
        'Name' = 'dev'
        'Server' = 'Server1'
        'Instance' = 'dev'
        'Port' = '50000'

        $l += [PSCustomObject]@
        'Name' = 'test'
        'Server' = 'Server1'
        'Instance' = 'test'
        'Port' = '50001'

        $l += [PSCustomObject]@
        'Name' = 'qa'
        'Server' = 'Server1'
        'Instance' = 'qa'
        'Port' = '50002'

        $l += [PSCustomObject]@
        'Name' = 'prod'
        'Server' = 'Server2'
        'Instance' = 'prod'
        'Port' = '50000'



        Now there's a list of server objects, but it's hard to access a specific one. Server's index in the list must be known, or the list otherwise searched.



        Consider a hash table: its contents can be retrieved based on a key. Let's use Name property as the key and add the servers into a hash table:



        # Empty hashtable
        $ht = @
        # Iterate server list and add each PSObject into the hasthtable
        $l | % $ht.add($_.name, $_ )
        # Print results
        $ht
        Name Value
        ---- -----
        qa @Name=qa; Server=Server1; Instance=qa; Port=50002
        dev @Name=dev; Server=Server1; Instance=dev; Port=50000
        prod @Name=prod; Server=Server2; Instance=prod; Port=50000
        test @Name=test; Server=Server1; Instance=test; Port=50001

        #Access the prod server object
        $ht.prod

        Name Server Instance Port
        ---- ------ -------- ----
        prod Server2 prod 50000

        # Get production's port
        $ht.prod.port
        50000

        # Generate a connection string to prod
        "Server=0,1" -f $($ht.prod.server+$ht.prod.instance), $ht.prod.port
        Server=Server2prod,50000


        As for how to use file-based hashtable, look up Export-Clixml and Import-Clixml.






        share|improve this answer













        A PS Custom object is well-suited for containing your data. Consider



        $o = [PSCustomObject]@
        'Name' = 'dev'
        'Server' = 'Server1'
        'Instance' = 'dev'
        'Port' = '50000'



        Now the $o object contains NoteProperty members that contain data. Accessing is simple enough:



        $o.server+$o.instance+','+$o.port
        Server1dev,50000


        Hashtables in Powershell are created with built-in syntax: $myHashTable = @.



        A quick demo how to work with hash tables is in order. Let's populate a list of aforementioned custom objects first. Like so,



        # Empty array
        $l = @()
        # Add some servers
        $l += [PSCustomObject]@
        'Name' = 'dev'
        'Server' = 'Server1'
        'Instance' = 'dev'
        'Port' = '50000'

        $l += [PSCustomObject]@
        'Name' = 'test'
        'Server' = 'Server1'
        'Instance' = 'test'
        'Port' = '50001'

        $l += [PSCustomObject]@
        'Name' = 'qa'
        'Server' = 'Server1'
        'Instance' = 'qa'
        'Port' = '50002'

        $l += [PSCustomObject]@
        'Name' = 'prod'
        'Server' = 'Server2'
        'Instance' = 'prod'
        'Port' = '50000'



        Now there's a list of server objects, but it's hard to access a specific one. Server's index in the list must be known, or the list otherwise searched.



        Consider a hash table: its contents can be retrieved based on a key. Let's use Name property as the key and add the servers into a hash table:



        # Empty hashtable
        $ht = @
        # Iterate server list and add each PSObject into the hasthtable
        $l | % $ht.add($_.name, $_ )
        # Print results
        $ht
        Name Value
        ---- -----
        qa @Name=qa; Server=Server1; Instance=qa; Port=50002
        dev @Name=dev; Server=Server1; Instance=dev; Port=50000
        prod @Name=prod; Server=Server2; Instance=prod; Port=50000
        test @Name=test; Server=Server1; Instance=test; Port=50001

        #Access the prod server object
        $ht.prod

        Name Server Instance Port
        ---- ------ -------- ----
        prod Server2 prod 50000

        # Get production's port
        $ht.prod.port
        50000

        # Generate a connection string to prod
        "Server=0,1" -f $($ht.prod.server+$ht.prod.instance), $ht.prod.port
        Server=Server2prod,50000


        As for how to use file-based hashtable, look up Export-Clixml and Import-Clixml.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Mar 9 at 6:40









        vonPryzvonPryz

        13k23744




        13k23744





























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55071966%2fhash-table-that-includes-sql-server-name-sql-port-and-sql-instance%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Identity Server 4 is not redirecting to Angular app after login2019 Community Moderator ElectionIdentity Server 4 and dockerIdentityserver implicit flow unauthorized_clientIdentityServer Hybrid Flow - Access Token is null after user successful loginIdentity Server to MVC client : Page Redirect After loginLogin with Steam OpenId(oidc-client-js)Identity Server 4+.NET Core 2.0 + IdentityIdentityServer4 post-login redirect not working in Edge browserCall to IdentityServer4 generates System.NullReferenceException: Object reference not set to an instance of an objectIdentityServer4 without HTTPS not workingHow to get Authorization code from identity server without login form

            2005 Ahvaz unrest Contents Background Causes Casualties Aftermath See also References Navigation menue"At Least 10 Are Killed by Bombs in Iran""Iran"Archived"Arab-Iranians in Iran to make April 15 'Day of Fury'"State of Mind, State of Order: Reactions to Ethnic Unrest in the Islamic Republic of Iran.10.1111/j.1754-9469.2008.00028.x"Iran hangs Arab separatists"Iran Overview from ArchivedConstitution of the Islamic Republic of Iran"Tehran puzzled by forged 'riots' letter""Iran and its minorities: Down in the second class""Iran: Handling Of Ahvaz Unrest Could End With Televised Confessions""Bombings Rock Iran Ahead of Election""Five die in Iran ethnic clashes""Iran: Need for restraint as anniversary of unrest in Khuzestan approaches"Archived"Iranian Sunni protesters killed in clashes with security forces"Archived

            Can't initialize raids on a new ASUS Prime B360M-A motherboard2019 Community Moderator ElectionSimilar to RAID config yet more like mirroring solution?Can't get motherboard serial numberWhy does the BIOS entry point start with a WBINVD instruction?UEFI performance Asus Maximus V Extreme