Articles

PowerShell articles, tutorials, and guides from community experts.

Richard Siddaway

Piping between functions

A question came up about piping between advanced functions. The input to the second function might be an array. To illustrate how this works imagine a function that gets disk information ““ or better still use this one. `function get-mydisk { [ CmdletBinding ( ) ] param ( [string] $computername = “$env:COMPUTERNAME” ) BEGIN { } #begin PROCESS { Get-WmiObject -Class Win32_LogicalDisk -ComputerName $computername | foreach { New-Object -TypeName PSObject

Richard Siddaway

Starting virtual machines for WSUS

My test environment usually has a dozen or so machines at any one time. Some of these are short lived and used for a particular piece of testing ““ others are kept for years. I decided that I wanted to keep up to date on the patching of these virtual machines so installed WSUS on a Windows 2012 box. One issue is that if a VM isn"™t started for 10 days WSUS starts complaining that it hasn"™t been contacted and if you run the WSUS clean up wizard the non-reporting servers may be removed.

Richard Siddaway

Account SIDs"“hopefully my last word

Ok the embarrassing moral of this story is that you shouldn’t answer questions in a hurry at the end of the evening. 5 minutes after shutting down I realised that there is a far, far simpler way to get the info. Win32_AccountSID is a WMI linking class. It links Win32_SystemAccount and Win32_SID classes. Get-WmiObject -Class Win32_SystemAccount | select Caption, Domain, Name, SID, LocalAccount gets you all you need

Richard Siddaway

Account SIDs revisited

I realised there is an easier way to get the data `function get-SID { param ( [string] $computername = $env:COMPUTERNAME ) Get-WmiObject -Class Win32_AccountSID -ComputerName $computername | foreach { $exp = “[wmi]'” $( $_ . Element ) “'” Invoke-Expression -Command $exp | select Domain , Name , SID , LocalAccount } } `Use the wmi type accelerator with the path from the Element and you can just select the data you want.

Richard Siddaway

Passing function names

A question asked about passing a function name into another function which then called the function. It sounds worse than it is. if you need to pass the name of a command and then call it try using invoke-expression `function ffour { Get-Random } function fthree { Get-Date } function ftwo { param ( [string] $fname ) Invoke-Expression $fname } “date” ftwo fthree “random” ftwo ffour `

Richard Siddaway

Account SIDs

A question on the forum asked about finding the accounts and SIDs on the local machine. `function get-SID { param ( [string] $computername = $env:COMPUTERNAME ) Get-WmiObject -Class Win32_AccountSID -ComputerName $computername | foreach { $da = ( ( $_ . Element ) . Split ( “.” ) [ 1 ] ) . Split ( “,” ) $sid = ( $_ . Setting -split “=” ) [ 1 ] -replace ‘"’

Richard Siddaway

UK PowerShell group "“ 29 January 2013

`**When: Tuesday, Jan 29, 2013 7:30 PM (GMT) Where: virtual *~*~*~*~*~*~*~*~*~* `Active Directory is one of the commonest automation targets for administrators. This session will covert the basics of automating your AD admin – scripts and the Microsoft cmdlets. The new features in PowerShell for Windows 2012 AD will also be covered Notes**`Richard Siddaway has invited you to attend an online meeting using Live Meeting.**[Join the meeting.](https://www.livemeeting.com/cc/usergroups/join?id=RCRWH3&role=attend&pw=5p7%24%7DS_%21h)****Audio Information****Computer Audio****To use computer audio, you need speakers and microphone, or a headset.

Richard Siddaway

PowerShell wins award

PowerShell has won one on InfoWorld"™s Technology of the Year awards for 2013 See http://www.infoworld.com/slideshow/80986/infoworlds-2013-technology-of-the-year-award-winners-210419#slide24 for details

Richard Siddaway

Workflow article 4

The next in the series of articles on PowerShell workflows that are appearing on the Scripting Guy blog has been published. The articles in the series that have been published are: http://blogs.technet.com/b/heyscriptingguy/archive/2012/12/26/powershell-workflows-the-basics.aspx http://blogs.technet.com/b/heyscriptingguy/archive/2013/01/02/powershell-workflows-restrictions.aspx http://blogs.technet.com/b/heyscriptingguy/archive/2013/01/09/powershell-workflows-nesting.aspx http://blogs.technet.com/b/heyscriptingguy/archive/2013/01/16/powershell-workflows-job-engine.aspx Look for the next article in one weeks time. Until then Enjoy!

Richard Siddaway

Updating Help on PowerShell v3

One of the new features in PowerShell v3 is the capability to update the help files. In fact you have to do this because PowerShell v3 doesn"™t ship with any help files. Since Windows 8 RTM"™d there have been a succession of new help files released. I discovered one of my netbooks didn"™t have the latest version of the help files installed. So I needed to update them. This got me thinking that it would be better if the machine did this for me.