Export (0) Print
Expand All
Expand Minimize
0 out of 2 rated this helpful - Rate this topic

Converting the FileSystemObject's ShortName Property


Windows PowerShell


Definition: Returns the 8.3 version of a long filename.

ShortName


This one is a little difficult in Windows PowerShell. We couldn’t come up with an easy way to do this with a cmdlet or .NET Framework object, but we did manage it with a combination of cmdlets and WMI.

We start by calling Get-WMIObject to create a WMI query that returns a reference to a file, in this case a file with the name C:\Scripts\Add_Access_Rules.ps1. Notice that you still need to follow the rules of WMI queries, which includes using two backslashes in the path, one to represent the backslash and one to “escape” the backslash so it’s treated as a backslash and not a WMI special character.

After we’ve retrieved the file, we pipe that file to the Select-Object cmdlet. We use the Select-Object cmdlet to retrieve only the EightDotThreeFileName property for that file. We assign this property to the variable $a.

Next we call the Split-Path cmdlet on $a.EightDotThreeFileName, which contains the full path to the file with the filename in 8.3 format. Because we want only the filename and not the full path, we use the -leaf parameter of Split-Path to return only the file name.


$a = (Get-WMIObject -query "Select * From CIM_DataFile Where Name = 'C:\\Scripts\\Add_Access_Rule.ps1'" | Select-Object EightDotThreeFileName)
Split-Path $a.EightDotThreeFileName -leaf


Note that you’ll receive an error message if the given file doesn’t exist.


See conversions of other FileSystemObject methods and properties.
Return to the VBScript to Windows PowerShell home page

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.