If you have a hash-table (or any variable that uses text as a 'getter' for the
enumerator) you can use single or double quotes to work around PowerShell's
variable naming conventions. If you are inside a double-quoted here-string,
variable expansion still happens in single quotes located inside the string. So:
$objectName = 'someHashTable'
$valueName = 'some-Value-Name'
$resultName = 'resultVariable'
$here = "`$$resultName = `$$objectName.'$valueName'"
If you need even more extreme naming conventions, consider this naming form for
your variables, which can also be used to access methods and properties and
special types:
${This is a Valid VaRiAbLe Name, with brace decorations!} = 1
-----Original Message-----
From: Joseph L. Casale [mailto:[email protected]]
Sent: Friday, June 08, 2012 9:16 PM
To: NT System Admin Issues
Subject: RE: Dynamic ScriptBlock creation
The problem stemmed from the fact that I have several modes or operations that
a script may run against several servers. Almost all of the different
operations required some base set of config to be derived by executing various
queries on the remote servers locally.
All of these jobs required a load of config to be passed into them, I wrapped
invoke-command in a loop that read hosts and their unique attributes from a
file then spawned the jobs.
Some of these jobs required state information to be passed between them, but I
could not execute the sequence all at once unless each stage was successful on
each node. If a node had an issue, manual intervention would be required
otherwise any node that proceeded would cause the nodes not passing checks to
be invalid and the clusters would be destroyed. So each step has to be invoked
manually.
I also write state info the successive jobs need to an xml file...
Burden came when developing the script, the script blocks for each stage reused
code and every change required amending each script block. So I split them into
separate files, set them to vars, and sourced them in one small script which
then assembled them all including the params and state info into one large
script block that is sent to to each node, the single arg passed in then
invokes the required function.
Thats how I arrived at the exact example I posted, vars changed as they were
meaningless.
If I use single quotes, how do I perform the substitution? I am also not sure
what you mean by decorated variables, a small nudge would be very appreciated:)
Thanks!
jlc
________________________________________
From: Michael B. Smith [[email protected]]
Sent: Friday, June 08, 2012 6:49 PM
To: NT System Admin Issues
Subject: RE: Dynamic ScriptBlock creation
There are likely 2 or 3 ways to address this (using single quotes or decorated
variables), but I'd really like to see an real-world example, 'cuz it's not
clear to me what you are trying to accomplish.
And, by the way, scriptblocks are always serialized as strings - so you may not
actually be helping yourself.
~ Finally, powerful endpoint security that ISN'T a resource hog! ~ ~
<http://www.sunbeltsoftware.com/Business/VIPRE-Enterprise/> ~
---
To manage subscriptions click here:
http://lyris.sunbelt-software.com/read/my_forums/
or send an email to [email protected]
with the body: unsubscribe ntsysadmin
~ Finally, powerful endpoint security that ISN'T a resource hog! ~
~ <http://www.sunbeltsoftware.com/Business/VIPRE-Enterprise/> ~
---
To manage subscriptions click here:
http://lyris.sunbelt-software.com/read/my_forums/
or send an email to [email protected]
with the body: unsubscribe ntsysadmin