learn-powershell.net Open in urlscan Pro
192.0.78.24  Public Scan

Submitted URL: http://learn-powershell.net/
Effective URL: https://learn-powershell.net/
Submission: On February 25 via manual from US — Scanned from DE

Form analysis 6 forms found in the DOM

GET https://learn-powershell.net/

<form role="search" method="get" id="searchform" class="searchform" action="https://learn-powershell.net/">
  <div>
    <label class="screen-reader-text" for="s">Search for:</label>
    <input type="text" value="" name="s" id="s">
    <input type="submit" id="searchsubmit" value="Search">
  </div>
</form>

GET https://learn-powershell.net

<form action="https://learn-powershell.net" method="get"><label class="screen-reader-text" for="cat">Categories</label><select name="cat" id="cat" class="postform">
    <option value="-1">Select Category</option>
    <option class="level-0" value="162381199">2013 Scripting Games Judges Notes</option>
    <option class="level-0" value="238274551">Debug</option>
    <option class="level-0" value="282714">Deep Dive</option>
    <option class="level-0" value="7744666">Excel</option>
    <option class="level-0" value="7168">GUI</option>
    <option class="level-0" value="31428">Modules</option>
    <option class="level-0" value="103">News</option>
    <option class="level-0" value="315">Office</option>
    <option class="level-0" value="19743086">PowerCLI</option>
    <option class="level-0" value="178495">powershell</option>
    <option class="level-0" value="56726985">Scripting Games 2011</option>
    <option class="level-0" value="82426987">Scripting Games 2012</option>
    <option class="level-0" value="159555771">Scripting Games 2013</option>
    <option class="level-0" value="4493">scripts</option>
    <option class="level-0" value="10346">SQL</option>
    <option class="level-0" value="456880">Tech-Ed</option>
    <option class="level-0" value="10118394">Tips</option>
    <option class="level-0" value="1">Uncategorized</option>
    <option class="level-0" value="31441">V3</option>
    <option class="level-0" value="694088">V4</option>
    <option class="level-0" value="23664898">V5</option>
    <option class="level-0" value="38600">VMWare</option>
    <option class="level-0" value="205592021">Winter Scripting Games 2014</option>
    <option class="level-0" value="46652">WPF</option>
    <option class="level-0" value="347217">WSUS</option>
  </select>
</form>

POST https://subscribe.wordpress.com

<form action="https://subscribe.wordpress.com" method="post" accept-charset="utf-8" id="subscribe-blog">
  <p>Enter your email address to subscribe to this blog and receive notifications of new posts by email.</p>
  <div class="jetpack-subscribe-count">
    <p> Join 473 other followers </p>
  </div>
  <p id="subscribe-email">
    <label id="subscribe-field-label" for="subscribe-field" class="screen-reader-text"> Email Address: </label>
    <input type="email" name="email" style="width: 95%; padding: 1px 10px" placeholder="Enter your email address" value="" id="subscribe-field">
  </p>
  <p id="subscribe-submit">
    <input type="hidden" name="action" value="subscribe">
    <input type="hidden" name="blog_id" value="15063622">
    <input type="hidden" name="source" value="https://learn-powershell.net/">
    <input type="hidden" name="sub-type" value="widget">
    <input type="hidden" name="redirect_fragment" value="subscribe-blog">
    <input type="hidden" id="_wpnonce" name="_wpnonce" value="434e63255b"> <button type="submit" class="wp-block-button__link"> Sign me up! </button>
  </p>
</form>

POST https://subscribe.wordpress.com

<form method="post" action="https://subscribe.wordpress.com" accept-charset="utf-8" style="display: none;">
  <div class="actnbr-follow-count">Join 473 other followers</div>
  <div>
    <input type="email" name="email" placeholder="Enter your email address" class="actnbr-email-field" aria-label="Enter your email address">
  </div>
  <input type="hidden" name="action" value="subscribe">
  <input type="hidden" name="blog_id" value="15063622">
  <input type="hidden" name="source" value="https://learn-powershell.net/">
  <input type="hidden" name="sub-type" value="actionbar-follow">
  <input type="hidden" id="_wpnonce" name="_wpnonce" value="434e63255b">
  <div class="actnbr-button-wrap">
    <button type="submit" value="Sign me up"> Sign me up </button>
  </div>
</form>

<form id="jp-carousel-comment-form">
  <label for="jp-carousel-comment-form-comment-field" class="screen-reader-text">Write a Comment...</label>
  <textarea name="comment" class="jp-carousel-comment-form-field jp-carousel-comment-form-textarea" id="jp-carousel-comment-form-comment-field" placeholder="Write a Comment..."></textarea>
  <div id="jp-carousel-comment-form-submit-and-info-wrapper">
    <div id="jp-carousel-comment-form-commenting-as">
      <fieldset>
        <label for="jp-carousel-comment-form-email-field">Email (Required)</label>
        <input type="text" name="email" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-email-field">
      </fieldset>
      <fieldset>
        <label for="jp-carousel-comment-form-author-field">Name (Required)</label>
        <input type="text" name="author" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-author-field">
      </fieldset>
      <fieldset>
        <label for="jp-carousel-comment-form-url-field">Website</label>
        <input type="text" name="url" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-url-field">
      </fieldset>
    </div>
    <input type="submit" name="submit" class="jp-carousel-comment-form-button" id="jp-carousel-comment-form-button-submit" value="Post Comment">
  </div>
</form>

POST /

<form action="/" method="post">
  <label for="target_email">Send to Email Address</label>
  <input type="email" name="target_email" id="target_email" value="">
  <label for="source_name">Your Name</label>
  <input type="text" name="source_name" id="source_name" value="">
  <label for="source_email">Your Email Address</label>
  <input type="email" name="source_email" id="source_email" value="">
  <input type="text" id="jetpack-source_f_name" name="source_f_name" class="input" value="" size="25" autocomplete="off" title="This field is for validation and should not be changed">
  <div class="g-recaptcha" data-sitekey="6LcmyE0UAAAAALID28yVNg7pFCodGaArJzHitez_" data-theme="light" data-type="image" data-tabindex="0" data-lazy="true" data-url="https://www.google.com/recaptcha/api.js?hl=en"></div>
  <img style="float: right; display: none" class="loading" src="https://s0.wp.com/wp-content/mu-plugins/post-flair/sharing/images/loading.gif" alt="loading" width="16" height="16">
  <input type="submit" value="Send Email" class="sharing_send">
  <a rel="nofollow" href="#cancel" class="sharing_cancel" role="button">Cancel</a>
  <div class="errors errors-1" style="display: none;"> Post was not sent - check your email addresses! </div>
  <div class="errors errors-2" style="display: none;"> Email check failed, please try again </div>
  <div class="errors errors-3" style="display: none;"> Sorry, your blog cannot share posts by email. </div>
</form>

Text Content

LEARN POWERSHELL | ACHIEVE MORE

What is this Powershell of which you speak?
Skip to content
 * Home
 * About
 * Articles
 * PowerShell Forum Directory
 * Projects
 * Publications
 * Scripts
 * Speaking

← Older posts



DEALING WITH RUNSPACEPOOL VARIABLE SCOPE CREEP IN POWERSHELL

Posted on January 28, 2018 by Boe Prox

Something that I had noticed a while back that I would receive some output
values in my objects that shouldn’t have been there. Properties that should have
been Null had values in them, and not just random values, but values that
matched some of the other outputted objects. This was somewhat worrisome because
I didn’t want my project, PoshRSJob, to have this same problem (which it did
have). Duplicating the issue was simple, and actually fixing ended up being
simple but it wasn’t something that immediately stood out to me, mostly because
I had thought that I tested out the solution already and it didn’t work.

The solution to this also shows that sometimes the simplest of fixes can solve
the more annoying or complex problems as well as showing that sometimes it is ok
to take a little time away from an issue (as long as it isn’t critical to
something) and coming back to it can help refresh your mind so you can come back
more focused on the issue.

My demo code below will run a simple script block and outputs an object with a
few properties that show the pipeline number (basically just something to supply
as an outside variable into the scriptblock), the ThreadID so I know that the
runspacepool is behaving by reusing the existing runspaces and lastly a boolean
value that is probably the most important value in that it shows whether the
pipeline value (the first item in our object) is either an odd or even number.
If it isn’t an odd number, then it should be a null value and if it is odd, then
a boolean value of $True is used.

I’m determining whether the value is odd or even by using –BAND which is a
Bitwise AND statement.

1
2
3
4
5
6
1..10 | ForEach {
    [pscustomobject]@{
        Number = $_
        IsOdd = [bool]($_ -BAND 1)
    }
}



You can see that this accurately shows which values are odd and which values are
even.

Now in my demo code I will use the same logic but just won’t show False if it is
even. The idea is that there should be an alternating Null/True value for each
returned object.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#region RunspacePool Demo
$Parameters = @{}
$RunspacePool = [runspacefactory]::CreateRunspacePool(
    [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault()
)
[void]$RunspacePool.SetMaxRunspaces(2)
$RunspacePool.Open()
$jobs = New-Object System.Collections.ArrayList
1..10 | ForEach {
    $Parameters.Pipeline = $_
    $PowerShell = [powershell]::Create()
    $PowerShell.RunspacePool = $RunspacePool
    [void]$PowerShell.AddScript({
        Param (
            $Pipeline
        )
        If ($Pipeline -BAND 1) {
            $Fail = $True
        }
        $ThreadID = [System.Threading.Thread]::CurrentThread.ManagedThreadId
        [pscustomobject]@{
            Pipeline = $Pipeline
            Thread = $ThreadID
            IsOdd = $Fail
        }
        #Remove-Variable fail
    })
    [void]$PowerShell.AddParameters($Parameters)
    [void]$jobs.Add((
        [pscustomobject]@{
            PowerShell = $PowerShell
            Handle = $PowerShell.BeginInvoke()
        }
    ))
}
While ($jobs.handle.IsCompleted -eq $False) {
    Write-Host "." -NoNewline
    Start-Sleep -Milliseconds 100
}
## Wait until all jobs completed before running code below
$return = $jobs | ForEach {
    $_.powershell.EndInvoke($_.handle)
    $_.PowerShell.Dispose()
}
$jobs.clear()
$return
#endregion RunspacePool Demo

Running this code shows that this fails rather impressively by showing all but a
single returned object as being Odd with the Pipeline property value.



Yea, this is not a good thing if you are looking for any sort of accuracy in
your returned data. I will note that you can mitigate this by calling the
Remove-Variable cmdlet against the $Fail variable at the end of your
scriptblock, but this isn’t really something that I would expect everyone to do
as a solution should really be available within the module itself or at least
some way to avoid handling this within the scriptblock.

I looked at many possible options such as changing the runspace thread options
thinking that it was a symptom of reusing the same runspace and thinking that it
was “just the way it is” and that users would have to remember to remove the
variables at the end of the scriptblock execution. Thankfully, that was not the
solution that I was going to need to stick with. I ended up stepping away from
this issue for a few months because I just couldn’t figure out what was going on
and my attempts to fix it ended in failure. Rather than chase my own tail on
this, I decided that I would refocus my efforts on something else and then
re-engage this at a later date. By doing this, I was able to think better on
what I should be looking at as well as testing my different ideas out.

So the big question is: what is your solution to this issue? Well, it comes down
to setting a value of $True on the UseLocalScope property when calling the
AddScript() method early into the runspace build.



By setting this value, now everything behaves as expected and we no longer have
the oddness of values being where they shouldn’t be at.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#region RunspacePool Demo
$Parameters = @{}
$RunspacePool = [runspacefactory]::CreateRunspacePool(
    [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault()
)
[void]$RunspacePool.SetMaxRunspaces(2)
$RunspacePool.Open()
$jobs = New-Object System.Collections.ArrayList
1..10 | ForEach {
    $Parameters.Pipeline = $_
    $PowerShell = [powershell]::Create()
    $PowerShell.RunspacePool = $RunspacePool
    [void]$PowerShell.AddScript({
        Param (
            $Pipeline
        )
        If ($Pipeline -BAND 1) {
            $Fail = $True
        }
        $ThreadID = [System.Threading.Thread]::CurrentThread.ManagedThreadId
        [pscustomobject]@{
            Pipeline = $Pipeline
            Thread = $ThreadID
            Fail = $Fail
        }
        #Remove-Variable fail
    }, $True) #Setting UseLocalScope to $True fixes scope creep with variables
in RunspacePool
    [void]$PowerShell.AddParameters($Parameters)
    [void]$jobs.Add((
        [pscustomobject]@{
            PowerShell = $PowerShell
            Handle = $PowerShell.BeginInvoke()
        }
    ))
}
While ($jobs.handle.IsCompleted -eq $False) {
    Write-Host "." -NoNewline
    Start-Sleep -Milliseconds 100
}
## Wait until all jobs completed before running code below
$return = $jobs | ForEach {
    $_.powershell.EndInvoke($_.handle)
    $_.PowerShell.Dispose()
}
$jobs.clear()
$return
#endregion RunspacePool Demo



Success! The $Fail variable doesn’t try to sneak across to another runspace that
is running to prevent an inaccurate display of what number is odd when it should
be treated as an even number by remaining Null.

Update: If you declare a Global variable within the scriptblock
($Global:Fail=$True), it will be treated as though you never wanted to use the
UseLocalScope and will persist throughout all of the subsequent runspaces that
you run in your runspacepool. Just another reason why you should always avoid
using the Global scope unless absolutely needed!

So in the end, what was a pretty serious issue in how the variables and their
values were being preserved across runspacepools ended up being a rather simple
fix once I came back from a little time away from troubleshooting.


SHARE THIS:

 * Twitter
 * Facebook
 * Email
 * LinkedIn
 * Reddit
 * Pocket
 * 


LIKE THIS:

Like Loading...
Posted in powershell | Tagged PoshRSJob, Powershell, runspace, runspacepool | 6
Comments


2018 POWERSHELL RESOLUTIONS

Posted on December 31, 2017 by Boe Prox

This As I did last year, and the years before that, I wanted to review my last
PowerShell resolutions and see how well I did and then take a look at the coming
year and pick a few things that I’d like to strive for either in learning new
things with PowerShell or as part of the community. With so much happening in
the world of PowerShell, it should be pretty fun to figure out things that I
would like to learn and talk about in the coming new year. Also, with a new
position as a SQL DBA, I am looking forward to doing some amazing things with
PowerShell and SQL.

Without further ado, let’s see what I said last year and whether I met my goal
with each resolution. Anything in Green are resolutions that I met while those
in Red are those that I missed.

 * Speak at a user group or conference this year.
    * I spoke not only at the Austin PowerShell User Group, but also the Tampa
      PowerSjhell User Group this year. I didn’t get to speak at a conference
      this year, but maybe next year.

 * Write at at least 2 blogs that relate to SQL or InfoSec.
    * While I wanted to write some InfoSec related blogs, I ended up focusing on
      some SQL related content mostly on MCPMag.

 * Start a new PowerShell project.
    * I was able to put together a few different projects that dealt with
      inventories of both Windows servers and SQL Servers. I had a lot of fun
      with each of these as they had each had me thinking a different way in
      what I felt was useful to keep in an inventory. While I haven’t worked
      much on them lately, there are definitely things that I would like to add
      to them to make them even more useful to the community.

 * Operational Validation with PowerShell and Pester.
    * While I didn’t write anything regarding this resolution, I did work with
      Pester off and on through out the year and tried to incorporate some of
      the Operational Validation in various tests to see how best I could
      utilize this in my environment. Definitely excited to  share some of my
      stuff as I do more work with them.

Looking back, I am happy to see that I was able to hit on all of my resolutions
and show them as being completed. Of course, completing my resolutions for 2017
doesn’t mean that I am done. With 2018 coming up in the next few hours ( for me
at least, those of you may have already celebrated it), it is time to think
about what I would like to accomplish next year.

 * Speak at a user group or conference this year.
    * This will always be a common resolution to reach as I like to share my
      knowledge and projects with anyone who would like to listen

 * More work with SQL
    * Being a SQL DBA, I am looking to continue my work with PowerShell to
      manage and report on SQL Server as well as making use of the amazing
      DBATools.

 * Open Source PowerShell Contribution
    * There are definitely some things that I would like to see in PowerShell
      and now that it is open source, now is the best time to get involved to
      help make PowerShell even better!

 * Yahoo Fantasy Football Module
    * Yep, this is very specific but something that I have been thinking about
      doing for a couple of years now. If I call it out specifically to work on,
      perhaps I can make the move to actually build it.

So those are my resolutions for 2018. Some are community based, some are more
professional development driven and another is just outright for run. And the
same should be done for you! You don’t have to be focused just on one aspect of
the resolution, mix it up and have fun with it while learning something new!

Feel free to share your resolutions below and let me know what you are looking
to do in 2018!


SHARE THIS:

 * Twitter
 * Facebook
 * Email
 * LinkedIn
 * Reddit
 * Pocket
 * 


LIKE THIS:

Like Loading...
Posted in powershell | Tagged 2018, Powershell, resolution | 3 Comments


QUICK HITS: GETTING THE LOCAL COMPUTER NAME

Posted on September 5, 2017 by Boe Prox

I’ve had a few emails and questions about the best way to get the hostname of
the local computer that you are currently logged into and felt that a quick (and
I mean quick ) post here would be worthwhile.

Using WMI or the CIM cmdlets, you can pull the information from just about any
class as there is the __Server property which gives you the name, or you can
make of the PSComputername property (which is just an alias to __Server thanks
to a type file). Here is one such example:

Get-WMIObject –Class Win32_Bios | Select PSComputername, __Server



A more simple approach is making use of a legacy command, hostname.exe which
will present you with the local machine’s computername.



There are also environmental variables that you can make use of to get this
information like COMPUTERNAME.

$Env:Computername



That’s it! Like I said, this was short and sweet. Do you know an other ways to
display the hostname of your local machine? Comment with them below!


SHARE THIS:

 * Twitter
 * Facebook
 * Email
 * LinkedIn
 * Reddit
 * Pocket
 * 


LIKE THIS:

Like Loading...
Posted in powershell | Tagged computername, hostname, Powershell, quickhits |
Leave a comment


RECENT ARTICLES ON MCPMAG

Posted on July 31, 2017 by Boe Prox

I’ve been busy working on some articles for MCPMag.com and wanted to share a
couple of stubs to my most recent articles.

Gathering Installed Software Using PowerShell

If there is one thing an administrator finds themselves doing, it is probably
determining what software is installed on their system. It could be simply for
just knowing what they have installed, or determining if some software installed
may have vulnerabilities which are fixed via a security update or performing an
audit for software (which may not have been approved to be installed). Either
way, having a means to locate this software can be difficult if you do not have
tools like SCCM or another third-party tool available to perform this type of
audit.

PowerShell can help us in gathering the software on a local or remote system by
giving us a couple of different options to perform the software gathering. One
is through WMI and another is by looking in the registry.

The WMI Approach
I’m going to cover the WMI first only because you should never use it as a means
to collect data on installed software. I’m talking about the Win32_Product class
in WMI. This class is misused in a number of scripts because while it does
provide you the information about the installed software, it comes with a cost
associated with it.

To show this, I will perform a WMI lookup for software and then show you what
happens as we are receiving data from WMI on installed software from this class.

More of this is available at
https://mcpmag.com/articles/2017/07/27/gathering-installed-software-using-powershell.aspx

 

Creating Shares in Windows Using the SmbShare Module in PowerShell

Working with Windows shares, you can easily create a location for others to use
to store data using a simple share name that could map several folders down in a
server (or client). This allows for better simplicity of gaining access to these
resources for all users. For the longest time, the best way to create a share
was going through the UI by clicking on a folder, and going through the motions
to create a share on the folder and then assign the proper share permissions for
the newly created resource.



PowerShell was able to be used as well in this, but you had to have some
knowledge of WMI and being able to properly create the share and ensure that you
picked the right type of share (disk in this case). This wasn’t exactly user
friendly as the method to create the share required an integer to represent the
type of share. So if you didn’t know the right number for a disk share (it’s 0),
then you might find yourself on the receiving end of errors or looking up the
proper number to create the right kind of share. Adding users or groups to the
share permissions is another thing all together. Working with the proper access
type (yes, more integers to work with here) as well as creating the acceptable
trustee format will make you wish for an easier approach to all of this.

More of this is available at
https://mcpmag.com/articles/2017/07/13/creating-shares-in-windows-using-the-smbshare-module.aspx

I have more blog content queued up here so stay tuned as I begin working through
and publishing the articles and also keep watching MCPMag as I continue to
produce some great articles on that site as well.


SHARE THIS:

 * Twitter
 * Facebook
 * Email
 * LinkedIn
 * Reddit
 * Pocket
 * 


LIKE THIS:

Like Loading...
Posted in powershell | Tagged file share, mcpmag, Powershell, software | Leave a
comment


QUICK HITS: FINDING ALL HYPERLINKS IN AN EXCEL WORKBOOK

Posted on July 1, 2017 by Boe Prox

Recently, I had the need to pull out all of the hyperlinks from an excel
worksheet that was given to me. While I could have gone the manual approach by
looking through all of the cells in the worksheet and copying all of the
hyperlinks out manually, that would have been a long grueling thing to do.

PowerShell fortunately gives me all of the ammo I need by allowing the use of
COM object creation to hook into the Excel.Application COM object and then open
up an existing Excel document and locate all of the hyperlinks which are in the
spreadsheet. Automation will always be better than manual if given the
opportunity to use it.

Since this is a ‘Quick Hits’ article, let’s not waste any time and step through
the process of locating all of the hyperlinks in an Excel document. The first
thing that I will do is create the Excel.Application COM object and then open up
my existing Excel document using the Open method under the Workbooks property on
the Excel object.

1
2
3
4
5
#region Load Excel
$excel = New-Object -ComObject excel.application
$excel.visible = $False
$workbook = $excel.Workbooks.Open('C:\users\proxb\desktop\Links.xlsx')
#endregion Load Excel

Note that you will need to supply the full path name to the document, otherwise
the open attempt will fail.

From there, I will reference whichever worksheet that has the links I want to
pull. In this case,  I only have a single worksheet so I will use the WorkSheet
property and specify ‘1’ which says to use the first worksheet in the workbook.
If you wanted the second worksheet,  then you would have used a ‘2’. The
worksheet object has a property called Hyperlinks which, as you might guess,
lists all of the cells with have hyperlinks in them.

1
$workbook.Worksheets(1).Hyperlinks



As you can see, not only do you get the hyperlinks, but also the display text
and the screen tips if you happen to use them.

I want a little more information such as the row and column where each of these
hyperlinks reside at. To do this, I will make use of the Range property which
contains the cell’s row and column number and add that to my new custom object.

1
2
3
4
5
6
7
8
9
10
11
$Hyperlinks = $workbook.Worksheets(1).Hyperlinks
$Hyperlinks | ForEach-Object {
    $Range = $_.Range
    [pscustomobject]@{
        Display = $_.TextToDisplay
        Url = $_.Address
        Screentip = $_.ScreenTip
        Row = $Range.Row
        Column = $Range.Column
    }
}



So there you go. We can quickly pull all of the hyperlinks from an Excel
spreadsheet using PowerShell and besides displaying the Url, we can even locate
exactly where in Excel the hyperlink is at by looking at the row and column
location.


SHARE THIS:

 * Twitter
 * Facebook
 * Email
 * LinkedIn
 * Reddit
 * Pocket
 * 


LIKE THIS:

Like Loading...
Posted in powershell | Tagged excel, hyperlink, Powershell | 2 Comments
← Older posts

Older posts
 * 


 * OMAHA POWERSHELL USERS GROUP


 * BOOKS


 * 2013 POWERSHELL SCRIPTING GAMES


 * TRANSLATE THIS BLOG
   
   Translate this blog into different languages...
   
   العربية
   Български
   中文(简体)
   中文(繁體)
   Hrvatski
   Česky
   Dansk
   Nederlands
   Suomi
   Français
   Deutsch
   Ελληνική
   हिन्दी
   Italiano
   日本語
   한국어
   Norsk
   Polski
   Português
   Română
   Русский
   Español
   Svenska
 * Search for:


 * RECENT POSTS
   
   * Dealing with Runspacepool Variable Scope Creep in PowerShell
   * 2018 PowerShell Resolutions
   * Quick Hits: Getting the Local Computer Name
   * Recent Articles on MCPMag
   * Quick Hits: Finding all Hyperlinks in an Excel Workbook


 * TOP POSTS
   
   * Changing Ownership of File or Folder Using PowerShell
   * Starting,Stopping and Restarting Remote Services with PowerShell
   * Querying UDP Ports with PowerShell
   * Avoiding System.Object[] (or Similar Output) when using Export-Csv
   * Using PowerShell to Query Web Site Information
   * PowerShell and Excel: Adding Some Formatting To Your Report
   * Locating Mount Points Using PowerShell
   * Quick Hits: Finding Exception Types with PowerShell
   * Getting the Icon from a File Using PowerShell
   * Building a Chart Using PowerShell and Chart Controls


 * ARCHIVES
   
   Archives Select Month January 2018  (1) December 2017  (1) September 2017
    (1) July 2017  (2) May 2017  (2) April 2017  (1) February 2017  (2) January
   2017  (1) December 2016  (2) November 2016  (2) October 2016  (2) September
   2016  (2) August 2016  (3) July 2016  (2) June 2016  (2) May 2016  (2) April
   2016  (3) March 2016  (3) February 2016  (2) January 2016  (3) December 2015
    (3) November 2015  (3) October 2015  (5) September 2015  (3) August 2015
    (3) July 2015  (2) June 2015  (3) May 2015  (4) April 2015  (3) March 2015
    (5) February 2015  (4) January 2015  (3) December 2014  (4) November 2014
    (4) October 2014  (4) September 2014  (4) August 2014  (5) July 2014  (2)
   June 2014  (5) May 2014  (4) April 2014  (6) March 2014  (5) February 2014
    (3) January 2014  (7) December 2013  (6) November 2013  (3) October 2013
    (9) September 2013  (6) August 2013  (7) July 2013  (8) June 2013  (4) May
   2013  (9) April 2013  (12) March 2013  (5) February 2013  (7) January 2013
    (7) December 2012  (7) November 2012  (6) October 2012  (5) September 2012
    (2) August 2012  (6) July 2012  (2) June 2012  (7) May 2012  (4) April 2012
    (8) March 2012  (10) February 2012  (2) January 2012  (5) December 2011  (2)
   November 2011  (1) October 2011  (2) September 2011  (6) August 2011  (4)
   July 2011  (3) June 2011  (4) May 2011  (4) April 2011  (1) March 2011  (4)
   February 2011  (8) January 2011  (6) November 2010  (3) October 2010  (5)
   September 2010  (5) August 2010  (7)


 * CATEGORIES
   
   Categories Select Category 2013 Scripting Games Judges Notes Debug Deep Dive
   Excel GUI Modules News Office PowerCLI powershell Scripting Games 2011
   Scripting Games 2012 Scripting Games 2013 scripts SQL Tech-Ed Tips
   Uncategorized V3 V4 V5 VMWare Winter Scripting Games 2014 WPF WSUS

 *  * .net
    * api
    * array
    * background jobs
    * binary
    * book
    * c#
    * clock
    * codeplex
    * com object
    * convert
    * CTP
    * database
    * deep dive
    * excel
    * Favorites
    * function
    * groups
    * guest blog
    * hash table
    * Internet Explorer
    * ise
    * mcpmag
    * module
    * MVP
    * network
    * news
    * parameter
    * patches
    * performance
    * pinvoke
    * podcast
    * port
    * PoshChat
    * poshpaig
    * PoshRSJob
    * poshwsus
    * powercli
    * powerscripting
    * Powershell
    * printers
    * quickhits
    * reflection
    * regex
    * registry
    * Regular Expressions
    * report
    * resolution
    * runspace
    * runspaces
    * scripting games 2012
    * scripting games 2013
    * scripting guy
    * scripts
    * SMO
    * Speaker
    * speaking
    * SQL
    * tcp
    * tips
    * tsql
    * updates
    * user group
    * V3
    * V4
    * v5
    * weather
    * widget
    * win32API
    * winter scriting games 2014
    * wmi
    * word
    * WPF
    * wsus
    * xaml


 * BLOGROLL
   
   * Francois-Xavier Cat PowerShell Blog
   * Jeff Hicks Powershell Blog
   * Microsoft Script Center
   * Mike Robbins Blog
   * Oliver Lipkau's Powershell Blog
   * Powerscripting Podcast
   * PowerShell Survival Guide
   * Powershell Team Blog
   * Powershell.Com
   * PowerShell.org
   * Sean Kearney's Powershell Blog
   * Shay Levi's Powershell Blog
   * Technet Powershell Forum
   * Technet Scripting Guys Forum
   * WSUS Administrator Module


 * EMAIL SUBSCRIPTION
   
   Enter your email address to subscribe to this blog and receive notifications
   of new posts by email.
   
   Join 473 other followers
   
   Email Address:
   
   Sign me up!


 * LATEST TECHNET ACTIVITY
   
   * Contributed a helpful post to the Using start-job -scriptblock to run
     script; need help using parameters thread in the The Official Scripting
     Guys Forum! Forum.
   * Contributed a helpful post to the Script to set the Primary DNS Suffix
     thread in the The Official Scripting Guys Forum! Forum.


 * TWITTER FEED
   
   * @BWWings If there is one guarantee, it is that my food is never on time for
     pickup. 10 months ago
   * @CoxHelp Appreciate the update! 10 months ago
   * @CoxHelp Hope we get service back sometime tonight. Been down since at
     least 3:45pm. https://t.co/D50GSc7BLZ 10 months ago
   * @nfmtweets Do you do haul away for old couches as part of any service for
     delivering a new couch we buy? 11 months ago
   * @Garmin Any reason why my fenix 6x that had 8 days of battery life would
     die 25 minutes into a treadmill run and sh… twitter.com/i/web/status/1…
     1 year ago


 * BLOG STATS
   
   * 4,913,118 Visitors Since August 5, 2010


 * META
   
   * Register
   * Log in
   * Entries feed
   * Comments feed
   * WordPress.com

 * 

Learn Powershell | Achieve More
Blog at WordPress.com.

 * Follow Following
    * Learn Powershell | Achieve More
      Join 473 other followers
      
      Sign me up
    * Already have a WordPress.com account? Log in now.

 *  * Learn Powershell | Achieve More
    * Customize
    * Follow Following
    * Sign up
    * Log in
    * Report this content
    * View site in Reader
    * Manage subscriptions
    * Collapse this bar

 

Loading Comments...

 

Write a Comment...
Email (Required) Name (Required) Website

%d bloggers like this:
Send to Email Address Your Name Your Email Address

Cancel
Post was not sent - check your email addresses!
Email check failed, please try again
Sorry, your blog cannot share posts by email.