header image

Archive for July, 2019

Unblock and unzip

Posted by: | July 31, 2019 Comments Off on Unblock and unzip |

When you download a zip file from the Internet you have to unblock and unzip the file. I need to do this fairly often so wrote this simple function to perform both actions rather than doing it manually. function unzipfile { param ( [string]$path ) Unblock-File -Path $path Expand-Archive -Path $path -DestinationPath (Split-Path -Path $path […]

under: PowerShell

Variables in scriptblocks

Posted by: | July 31, 2019 Comments Off on Variables in scriptblocks |

I often see questions regarding the use of variables in scriptblocks. Usually a variable will be defined outside the scriptblock and then an attempt will be made to use it in the scriptblock: PS> $path = ‘C:\test\OldData01.txt’ PS> Start-Job -Name j1 -ScriptBlock {Get-FileHash -Path $path -Algorithm SHA256}   If you look at the output from […]

under: PowerShell

Test local user doesn’t exist before creating

Posted by: | July 29, 2019 Comments Off on Test local user doesn’t exist before creating |

Saw a question asking how to Test local user doesn’t exist before creating. Windows 8 introduced the LocalAccounts module for Windows PowerShell. On Windows 10 1903 it runs in PowerShell v6/7.   There isn’t a Test-Localuser cmdlet but you can attempt to get the user before creation.   function new-user { [CmdletBinding()] param ( [string]$username […]

under: PowerShell

Missing verbs?

Posted by: | July 28, 2019 Comments Off on Missing verbs? |

I saw a post that suggested that you can’t use Sort as a verb in your functions. You get a message that sort is an unapproved verb. Are there any other missing verbs? I started with the object cmdlets as they are probably the most used cmdlets.   Running Get-Command *-Object | ForEach-Object { $v […]

under: PowerShell


Posted by: | July 27, 2019 Comments Off on Sddl |

An Sddl is a Security Descriptor Definition Language string – https://docs.microsoft.com/en-us/windows/win32/secauthz/security-descriptor-definition-language – that provides a succinct way to provides the security descriptor of an object as a string. An example Sddl would be O:BAG:S-1-5-21-437587817-63618879-1935034000-1001D:AI(A;ID;FA;;;SY)(A;ID;FA;;;BA)(A;ID;0x1200a9;;;BU)   Now I’m sure that’s totally clear to everyone but just in case you can’t decode it PowerShell has a cmdlet – ConvertFrom-SddlString – that […]

under: PowerShell

Sort direction

Posted by: | July 26, 2019 Comments Off on Sort direction |

By default Sort-Object uses an ascending sort direction.   Get-Command | Sort-Object -Property Source will sort the commands based on the Source (module) in ascending Source order.   If you use multiple properties Get-Command | Sort-Object -Property Source, Name, Version   Your output is sorted by Source, by Name within Source and by Version within […]

under: PowerShell

Volume friendly name

Posted by: | July 24, 2019 Comments Off on Volume friendly name |

When you use Get-Volume one of the properties displayed is the friendly name PS> Get-Volume -DriveLetter C DriveLetter FriendlyName FileSystemType ———– ———— ————– C NTFS   In this case its blank because I haven’t set a volume label. If you try to access the FriendlyName property PS> (Get-Volume ).FriendlyName   You’ll get nothing returned.   […]

under: PowerShell and CIM

Using aliases in scripts

Posted by: | July 23, 2019 Comments Off on Using aliases in scripts |

There’s been a long debate on the PowerShell github site regarding ternary operators – think of it as a short cut for if-else. Twice in that debate the point has been made that aliases are perfectly acceptable in scripts. Wrong. Using aliases in scripts should never be encouraged.   Aliases are short cuts to cmdlet […]

under: PowerShell

PowerShell v7 preview 2

Posted by: | July 22, 2019 Comments Off on PowerShell v7 preview 2 |

PowerShell v7 preview 2 arrived a few days ago. No big ticket items in this preview.   Some useful things: Issue with Get-ChildItem Path with wildcards has been fixed UseAbbreviationExpansion and TempDrive are moved from experimental features to official features Foreach-Object is 2 times faster – that’s just the looping remember that any cmdlets executing […]

under: PowerShell 7

PowerShell v6.2.2

Posted by: | July 16, 2019 Comments Off on PowerShell v6.2.2 |

PowerShell v6.2.2 has just been released.   One breaking change – the Enter-PSHostProcess is disabled when system is in lock down mode.   The jumplist is now created in STA to avoid potential CLR crash   Other changes are around the build process.   These changes shouldn’t have impact on your day to day scripts […]

under: PowerShell v6

Older Posts »