Welcome › Forums › General PowerShell Q&A › Is there a “template-sort-of-thing” in powershell?
- This topic has 2 replies, 2 voices, and was last updated 8 months, 2 weeks ago by
Participant.
-
AuthorPosts
-
-
May 3, 2020 at 5:02 am #225144
I have a code like this that is repeated multiple times in each of my conditional statements/cases. i have 3 conditions…for now, and everything works perfectly, but im mulling reformatting the script for easier reading.
One of the ways ive thought is to make a function, but the problem is that, i have a while loop that is intended for a specific scenario in each conditional statement that dequeues from a Queue containing some column names from a file.
so based on the code below that i want to put in some sort of template, i cant think of how this could work because as you can see, $tb stands for $table, which is what im opening prior to the conditional statements in my code. if i were to include everything regarding the server connection and table in a function, that means when i pass the “function” containing the code to the while loops, it will be creating/instantiating the table every iteration, which wont make sense and wont work anyways.
so i am thinking of using something like annotations, something like a template which wont expect to return anything or need reasonable arguments like a function otherwise would. The question is, does something like that exist?
This is the code that is the same across all my while loops that i would like to “store” somewhere and just pass it to them:
PowerShell1234567891011121314151617181920212223[crayon-6004b24f97f77275718750 inline="true" ]<span class="pln">$dqHeader </span><span class="pun">=</span><span class="pln"> $csvFileHeadersQueue</span><span class="pun">.</span><span class="typ">Dequeue</span><span class="pun">()</span><span class="pln">$column </span><span class="pun">=</span> <span class="typ">New</span><span class="pun">-</span><span class="typ">Object</span> <span class="typ">Microsoft</span><span class="pun">.</span><span class="typ">SqlServer</span><span class="pun">.</span><span class="typ">Management</span><span class="pun">.</span><span class="typ">Smo</span><span class="pun">.</span><span class="typ">Column</span><span class="pun">(</span><span class="pln">$tb</span><span class="pun">,</span><span class="pln"> $dqHeader</span><span class="pun">,</span><span class="pln"> $DataType1</span><span class="pun">)</span><span class="kwd">if</span> <span class="pun">(</span><span class="pln">$dqHeader </span><span class="pun">-</span><span class="kwd">in</span><span class="pln"> $PrimaryKeys</span><span class="pun">)</span><span class="pun">{</span><span class="com"># We require a primary key.</span><span class="pln">$column</span><span class="pun">.</span><span class="typ">Nullable</span> <span class="pun">=</span><span class="pln"> $false</span><span class="com">#$column.Identity = $true #not needed with VarChar</span><span class="com">#$column.IdentitySeed = 1 #not needed with VarChar</span><span class="pln">$tb</span><span class="pun">.</span><span class="typ">Columns</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="pln">$column</span><span class="pun">)</span><span class="pln">$primaryKey </span><span class="pun">=</span> <span class="typ">New</span><span class="pun">-</span><span class="typ">Object</span> <span class="typ">Microsoft</span><span class="pun">.</span><span class="typ">SqlServer</span><span class="pun">.</span><span class="typ">Management</span><span class="pun">.</span><span class="typ">Smo</span><span class="pun">.</span><span class="typ">Index</span><span class="pun">(</span><span class="pln">$tb</span><span class="pun">,</span> <span class="str">"PK_$csvFileBaseName"</span><span class="pun">)</span><span class="pln">$primaryKey</span><span class="pun">.</span><span class="typ">IndexType</span> <span class="pun">=</span> <span class="pun">[</span><span class="typ">Microsoft</span><span class="pun">.</span><span class="typ">SqlServer</span><span class="pun">.</span><span class="typ">Management</span><span class="pun">.</span><span class="typ">Smo</span><span class="pun">.</span><span class="typ">IndexType</span><span class="pun">]::</span><span class="typ">ClusteredIndex</span><span class="pln">$primaryKey</span><span class="pun">.</span><span class="typ">IndexKeyType</span> <span class="pun">=</span> <span class="pun">[</span><span class="typ">Microsoft</span><span class="pun">.</span><span class="typ">SqlServer</span><span class="pun">.</span><span class="typ">Management</span><span class="pun">.</span><span class="typ">Smo</span><span class="pun">.</span><span class="typ">IndexKeyType</span><span class="pun">]::</span><span class="typ">DriPrimaryKey</span> <span class="com">#Referential Integrity to prevent data inconsistency. Changes in primary keys must be updated in foreign keys.</span><span class="pln">$primaryKey</span><span class="pun">.</span><span class="typ">IndexedColumns</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">((</span><span class="typ">New</span><span class="pun">-</span><span class="typ">Object</span> <span class="typ">Microsoft</span><span class="pun">.</span><span class="typ">SqlServer</span><span class="pun">.</span><span class="typ">Management</span><span class="pun">.</span><span class="typ">Smo</span><span class="pun">.</span><span class="typ">IndexedColumn</span><span class="pun">(</span><span class="pln">$primaryKey</span><span class="pun">,</span><span class="pln"> $dqHeader</span><span class="pun">)))</span><span class="pln">$tb</span><span class="pun">.</span><span class="typ">Indexes</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="pln">$primaryKey</span><span class="pun">)</span><span class="pun">}</span><span class="kwd">else</span><span class="pun">{</span><span class="pln">$tb</span><span class="pun">.</span><span class="typ">Columns</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="pln">$column</span><span class="pun">)</span><span class="pun">}</span>think of it like a puzzle piece that would fit right in when requested to do so in the while loops to complete that “puzzle”
-
May 3, 2020 at 11:25 am #225195
As mentioned here https://stackoverflow.com/questions/61569760/is-there-a-function-like-thing-that-can-act-as-a-template I recommend you use a helper function..
-
May 4, 2020 at 12:16 am #225267
As mentioned here https://stackoverflow.com/questions/61569760/is-there-a-function-like-thing-that-can-act-as-a-template I recommend you use a helper function..
i went with your recommendation, thanks 🙂
-
-
AuthorPosts
- The topic ‘Is there a “template-sort-of-thing” in powershell?’ is closed to new replies.