PoshFunctions.psd1

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
@{

    # Script module or binary module file associated with this manifest.
    RootModule        = 'PoshFunctions.psm1'

    # Version number of this module.
    ModuleVersion     = '2.2.9'

    # Supported PSEditions
    # CompatiblePSEditions = @()

    # ID used to uniquely identify this module
    GUID              = '188504d6-d6ed-4ee3-92c4-7b426ed3d611'

    # Author of this module
    Author            = 'Bill Riedy'

    # Company or vendor of this module
    CompanyName       = ''

    # Copyright statement for this module
    Copyright         = '(c) 2022 Bill Riedy. All rights reserved.'

    # Description of the functionality provided by this module
    Description       = 'A curated collection of over 215 PowerShell functions. Many functions written by me. Others are attributed wherever possible.'

    # Minimum version of the Windows PowerShell engine required by this module
    PowerShellVersion = '5.0'

    # Name of the Windows PowerShell host required by this module
    # PowerShellHostName = ''

    # Minimum version of the Windows PowerShell host required by this module
    # PowerShellHostVersion = ''

    # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
    # DotNetFrameworkVersion = ''

    # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
    # CLRVersion = ''

    # Processor architecture (None, X86, Amd64) required by this module
    # ProcessorArchitecture = ''

    # Modules that must be imported into the global environment prior to importing this module
    # RequiredModules = @()

    # Assemblies that must be loaded prior to importing this module
    # RequiredAssemblies = @()

    # Script files (.ps1) that are run in the caller's environment prior to importing this module.
    # ScriptsToProcess = @()

    # Type files (.ps1xml) to be loaded when importing this module
    # TypesToProcess = @()

    # Format files (.ps1xml) to be loaded when importing this module
    # FormatsToProcess = @()

    # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
    # NestedModules = @()

    # Functions export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.

    FunctionsToExport = @( 'Compare-ObjectProperty', 'Compare-ObjectSetComplement',
        'Compare-ObjectSetDifference', 'Compare-ObjectSetIntersection',
        'Compare-ObjectSetUnion', 'Compare-PSGalleryObject', 'Convert-HexToRGB',
        'Convert-Int32ToUint32', 'Convert-Int64ToText', 'Convert-ObjectToHashtable',
        'Convert-RGBToHex', 'Convert-SecureStringToString', 'Convert-UserFlag',
        'ConvertFrom-Base64', 'ConvertFrom-Binary', 'ConvertFrom-DateTime',
        'ConvertFrom-FsRight', 'ConvertFrom-Hex', 'ConvertFrom-HexString',
        'ConvertFrom-HtmlEncode', 'ConvertFrom-RomanNumeral', 'ConvertFrom-UrlEncode',
        'ConvertFrom-UTC', 'ConvertFrom-Xml', 'ConvertTo-Base64', 'ConvertTo-Binary',
        'ConvertTo-BinaryIPv4', 'ConvertTo-Bool', 'ConvertTo-DateTime',
        'ConvertTo-DecimalIPv4', 'ConvertTo-DottedDecimalIPv4', 'ConvertTo-Hex',
        'ConvertTo-HexString', 'ConvertTo-HtmlEncode', 'ConvertTo-OrderedDictionary',
        'ConvertTo-RomanNumeral', 'ConvertTo-UncPath', 'ConvertTo-UrlEncode',
        'ConvertTo-UTC', 'Copy-Object', 'Eexit', 'Expand-IPv6', 'Expand-String',
        'Expand-Tab', 'Export-CSVSortedColumn', 'Export-FontSample', 'FileSizeAbove',
        'FileSizeBelow', 'Format-MacAddress', 'Format-RandomCase',
        'Format-ReverseString', 'Format-ReverseToken', 'Format-SortedList',
        'Format-TitleCase', 'Format-WrapText', 'Get-ArpTable', 'Get-Assoc',
        'Get-BashPath', 'Get-BinaryType', 'Get-CeasarCipher', 'Get-ComputerSite',
        'Get-ComputerUptime', 'Get-DiceRoll', 'Get-DisplayBrightness',
        'Get-DNSHostEntryAsync', 'Get-DriveStat', 'Get-DuplicateFileName', 'Get-Enum',
        'Get-ErrorInfo', 'Get-ExecutableForFile', 'Get-Factorial', 'Get-FileEncoding',
        'Get-FileName', 'Get-FileWithLeadingSpace', 'Get-FolderName', 'Get-Font',
        'Get-Fortune', 'Get-Ftype', 'Get-InvalidFileCharacter', 'Get-IpRange',
        'Get-LastDayInMonth', 'Get-List', 'Get-LongName', 'Get-MachineType',
        'Get-MacVendor', 'Get-Magic8Ball', 'Get-Md5Sum', 'Get-MyLocalLogonTime',
        'Get-NetworkCredential', 'Get-NTFSPermission', 'Get-NtpDate', 'Get-Power',
        'Get-PrintableAscii', 'Get-PrivateProfileComment', 'Get-PrivateProfileSection',
        'Get-PrivateProfileSectionNames', 'Get-PrivateProfileString',
        'Get-ProcessUser', 'Get-PSWho', 'Get-RandomDate', 'Get-RandomHexDigit',
        'Get-RandomMacAddress', 'Get-RegExpandString', 'Get-RegistryValue',
        'Get-RelativePath', 'Get-Round', 'Get-SaveFileName', 'Get-ScheduledTaskUser',
        'Get-ServiceUser', 'Get-Shortcut', 'Get-ShortName', 'Get-SID',
        'Get-SpecialFolder', 'Get-SqlDatabase', 'Get-SqlIndexFragmentation',
        'Get-SqlStoredProcedure', 'Get-StaticProperty', 'Get-String',
        'Get-SubnetMaskIPv4', 'Get-TruncatedDate', 'Get-Type', 'Get-TypeAccelerator',
        'Get-UrlContent', 'Get-VssAdminListVolumes', 'Get-VssAdminListWriters',
        'Get-WordCount', 'Get-WordList', 'grep', 'Invoke-Beep',
        'Invoke-CountdownTimer', 'Invoke-SoundPlayer', 'Invoke-Speak', 'Join-Object',
        'Lock-Workstation', 'Measure-Char', 'Merge-Object', 'mklink',
        'Move-ToRecycleBin', 'New-ColorPicker', 'New-Credential', 'New-DatePicker',
        'New-FontPicker', 'New-InputBox', 'New-InputBoxSecureString', 'New-MessageBox',
        'New-PFDateFormat', 'New-QR', 'New-RandomPassword', 'New-Screenshot',
        'New-Shortcut', 'Optimize-SqlIndexFragmentation',
        'Optimize-SqlStoredProcedure', 'Out-PDFToPrinter', 'Read-HostWithDefault',
        'Remove-BlankOrComment', 'Remove-EmptyProperty', 'Remove-QuotesFromCsv',
        'Remove-TeamsCache', 'Remove-Trailing', 'Reset-Desktop', 'Resolve-FQDN',
        'Resolve-HostName', 'sed', 'Set-Capslock', 'Set-Display', 'Set-Numlock',
        'Set-PrivateProfileComment', 'Set-PrivateProfileString', 'Set-Scrolllock',
        'Set-SpeakerVolume', 'Set-Type', 'Set-WindowStyle', 'Show-AllColor',
        'Show-Calendar', 'Show-Color', 'Show-ColorsWithBackground', 'Show-DaysOfWeek',
        'Show-FileAttribute', 'Show-FsRight', 'Show-Month', 'Show-NamedColor',
        'Show-Object', 'Show-Progress', 'Show-ShortDaysOfWeek', 'Show-ShortMonth',
        'Show-SubnetMaskIPv4', 'Show-Timezone', 'Split-CanonicalName',
        'Split-DistinguishedName', 'Split-Line', 'Start-ADReplication',
        'Start-RecordSession', 'Stop-RecordSession', 'Switch-Mute',
        'Test-ConnectionAsync', 'Test-IsAdmin', 'Test-IsCapsLock', 'Test-IsDate',
        'Test-IsFileLocked', 'Test-IsHexString', 'Test-IsLocalIPv4', 'Test-IsNull',
        'Test-IsNumeric', 'Test-IsNumLock', 'Test-IsScrollLock',
        'Test-IsValidEmailAddress', 'Test-IsValidIPv4', 'Test-IsValidIPv6',
        'Test-MultipleBool', 'Test-Network', 'Test-NtpDateVsNow', 'Test-Password',
        'Test-PasswordComplexity', 'Test-Port', 'Test-Set', 'Update-ExplorerIcon',
        'Use-Stopwatch', 'Write-SelectStatement', 'Write-StringArray',
        'Write-StringHash', 'Write-TextMenu' )

    # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
    #CmdletsToExport = '*'

    # Variables to export from this module
    #VariablesToExport = '*'

    # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
    # AliasesToExport = '*'

    AliasesToExport   = @( 'Base64Decode', 'Base64Encode', 'Beep',
        'Convert-IntToText', 'Convert-ROT13', 'ConvertTo-BinaryIP',
        'ConvertTo-DecimalIP', 'ConvertTo-DottedDecimalIP', 'CountdownTimer',
        'Fortune', 'Get-DupeFileName', 'Get-Folder', 'Get-LastReboot', 'Get-SaveFile',
        'Get-SubnetMaskIP', 'Md5Sum', 'Parse-Bool', 'Recycle', 'ReverseString',
        'Set-Speaker', 'Show-InvalidFileCharacter', 'Show-SpecialFolder',
        'Show-SubnetMaskIP', 'Show-TypeAccelerator', 'Speak', 'Test-IsLocalIP',
        'Test-IsValidIP', 'Test-MultiBool', 'UrlDecode', 'UrlEncode', 'WrapText' )

    # DSC resources to export from this module
    # DscResourcesToExport = @()

    # List of all modules packaged with this module
    # ModuleList = @()

    # List of all files packaged with this module
    # FileList = @()

    # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
    PrivateData       = @{

        PSData = @{

            # Tags applied to this module. These help with module discovery in online galleries.
            Tags         = @( 'base64', 'beep', 'binaryip', 'calendar', 'capslock', 'color-hex',
                'color-rgb', 'color-show', 'computersite', 'computer-site', 'credential',
                'date-random', 'datetime', 'date-truncate', 'days-week', 'decimalip',
                'display', 'dns-async', 'dotteddecimalip', 'email-address', 'expand-string',
                'expand-tab', 'exponentiation', 'file', 'file-encoding', 'file-invalidchar',
                'folder', 'format', 'functions', 'gui', 'ini', 'inputbox', 'ip', 'iprange',
                'isadmin', 'isdate', 'ishexstring', 'isnumeric', 'isvalidemail', 'isvalidip',
                'library', 'macaddress', 'magic8ball', 'markdown', 'md5sum', 'msgbox',
                'numlock', 'ping-async', 'popup', 'progress', 'random-date', 'registry',
                'reverse-string', 'rot13', 'round', 'savefile', 'scrolllock', 'set-type',
                'share-permission', 'share-stat', 'shortcut', 'sid', 'speak', 'subnetmask',
                'system', 'timezone', 'urlencode', 'utc', 'wrap-text', 'xml' )


            # A URL to the license for this module.
            LicenseUri   = 'https://github.com/riedyw/PoshFunctions/blob/master/Resources/License.txt'

            # A URL to the main website for this project.
            ProjectUri   = 'https://github.com/riedyw/PoshFunctions'

            # A URL to an icon representing this module.
            IconUri      = 'https://github.com/riedyw/PoshFunctions/blob/master/Resources/PoshFunctions.png'

            # ReleaseNotes of this module
            ReleaseNotes = @'
For full release notes see .\Resources\ReleaseNotes.txt
### 2.2.9
* added ConvertFrom-HexString - converting a hex string back to plain text: '41' -> 'A'
* added ConvertTo-HexString = converting plain text to a hex string: 'A' -> '41'
* added Get-ErrorInfo - explain please
* added Get-Factorial - calculates the factorial of a number 1-20. Higher than 20 results in overflow of [int64] datatype
* added Invoke-SoundPlayer - will play a .wav file
* added Split-CanonicalName - splits an AD canonical name into either -Parent or -Leaf
* added Split-DistinguishedName - splits an AD distinguished name into either -Parent or -Leaf
* added Write-SelectStatement - helper function to write a select statement for properties and converts properties that are arrays to a delimited string. Helpful when exporting complex object to CSV
* updated Compare-ObjectProperty - replaced += with [System.Collections.Arraylist]
* updated Convert-Int32ToUint32 - replaced += with [System.Collections.Arraylist]
* updated Convert-Int64ToText - fixed trailing space with .Trim()
* updated ConvertFrom-FsRight - removed $MatchFound | Out-Null, replaced += with [System.Collections.Arraylist], fixed logic error with Combo rights and IncludeInput
* updated Copy-Object - replaced += with [System.Collections.Arraylist]
* updated Expand-IPv6 - replaced += with [System.Collections.Arraylist]
* updated Export-FontSample - replaced += with [System.Collections.Arraylist]
* updated Format-RandomCase - replaced += with [System.Collections.Arraylist]
* updated Format-WrapText - replaced += with [System.Collections.Arraylist]
* updated Get-CeasarCipher - replaced += with [System.Collections.Arraylist]
* updated Get-ComputerUptime - added Credential
* updated Get-DisplayBrightness - added Credential, fixed error if not running on laptop monitor
* updated Get-Enum - replaced += with [System.Collections.Arraylist]
* updated Get-Font - minor logic fix in Where-Object statement that previously returned no results
* updated Get-IpRange - replaced += with [System.Collections.Arraylist]
* updated Get-MachineType - added Credential
* updated Get-MacVendor - replaced Invoke-RestMethod with curl.exe as it was no longer returning correct results
* updated Get-NTFSPermission - replaced += with [System.Collections.Arraylist]
* updated Get-NtpDate - replace piping to Out-Null to $null =
* updated Get-PSWho - added Credential
* updated Get-PrintableAscii - updated logic to replace ' ' with '(Space)'
* updated Get-PrivateProfileString - replace piping to Out-Null to $null =
* updated Get-ProcessUser - added Credential
* updated Get-ScheduledTaskUser - replaced += with [System.Collections.Arraylist], added Credential
* updated Get-ServiceUser - replaced += with [System.Collections.Arraylist], added Credential
* updated Get-SqlDatabase - replaced += with [System.Collections.Arraylist]
* updated Get-SqlStoredProcedure - replaced += with [System.Collections.Arraylist]
* updated Get-Type - replaced += with [System.Collections.Arraylist]
* updated Get-TypeAccelerator - replaced += with [System.Collections.Arraylist]
* updated Invoke-Speak - replaced += with [System.Collections.Arraylist]
* updated Measure-Char - replaced += with [System.Collections.Arraylist]
* updated Merge-Object - replaced += with [System.Collections.Arraylist]
* updated New-Shortcut - replace piping to Out-Null to $null =
* updated Optimize-SQLIndexFragmentation - replace piping to Out-Null to $null =
* updated Optimize-SQLStoredProcedure - replace piping to Out-Null to $null =
* updated Set-Display - added Credential
* updated Set-PrivateProfileComment - replaced += with [System.Collections.Arraylist]
* updated Set-WindowStyle - replace piping to Out-Null to $null =
* updated Show-Calendar - replaced += with [System.Collections.Arraylist]
* updated Show-FsRight - replaced += with [System.Collections.Arraylist]
* updated Show-NamedColor - replaced += with [System.Collections.Arraylist]
* updated Show-Object - replaced += with [System.Collections.Arraylist]
* updated Show-Progress - replaced += with [System.Collections.Arraylist]
* updated Start-ADReplication - added Credential
* updated Start-RecordSession - replace piping to Out-Null to $null =
* updated Test-IsDate - removed [DateTime] $d | Out-Null
* updated Test-IsNumeric - replaced piping to Out-Null with saving to a variable
* updated Test-MultipleBool - replaced += with [System.Collections.Arraylist]
* updated Test-Password - added Credential
* updated Write-StringArray - replaced += with [System.Collections.Arraylist]
* updated Write-StringHash - changed type of -Hash and error check for hashtable or arraylist
* updated Write-StringHash - replaced += with [System.Collections.Arraylist]
* updated Write-TextMenu - replaced += with [System.Collections.Arraylist]
 
### 2.2.8
* created .\Resources folder and moved files from the root of the modules excluding: PoshFunctions.psd1, PoshFunctions.psm1, ReadMe.md
* added additional word list file that contains over 370,000 entries for more English words
* added Convert-Int64ToText - Take an integer value and convert to English text. Valid range +/- 999,999,999,999.
* added ConvertFrom-RomanNumeral - Converts a roman numeral to a number
* added ConvertTo-RomanNumeral - Converts a number to a Roman numeral
* added Get-ArpTable - takes output from 'arp.exe -a' and parses output into objects
* added Get-Assoc - Displays file extension associations
* added Get-Ftype - Displays file types used in file extension associations
* added Get-VssAdminListVolumes - takes output from 'vssadmin.exe list volumes' and parses output into objects
* added Get-VssAdminListWriters - takes output from 'vssadmin.exe list writers' and parses output into objects
* added New-PFDateFormat - which represents a [datetime] in multiple formats
* added Test-IsLocalIPv4 - which determines if target IP address is local or remote (routed through default gateway) given the ip addresses and subnet mask
* deleted Get-Address - REST API at website no longer works
* deleted Get-GeoCode - REST API at website no longer works
* updated Convert-HexToRGB - changed 'return' to 'break' in error condition
* updated ConvertFrom-Datetime - added -ISO8601 parameter
* updated ConvertFrom-FSRight - added -IncludeInput parameter, added support for array of input
* updated ConvertTo-Datetime - added -ISO8601 parameter
* updated Expand-String - changed class name from 'ExtractData' to 'PFExtractData' to prevent conflict
* updated Get-BinaryType - changed namespace from 'Win32Utils' to 'PFWin32Utils' to prevent conflict
* updated Get-ExecutableForFile - changed class name from 'Win32API' to 'PFWin32API' to prevent conflict, changed name of internal variable
* updated Get-LongName - added -LiteralPath for explictly named paths (no wildcards), proper handling of multiple paths with wildcards
* updated Get-MacVendor - changed [ValidatePattern] to logic within function to clean up improperly formatted mac addresses, display MacAddress then Vendor
* updated Get-NTFSPermission - changed 'return' to 'break' in error condition
* updated Get-PrintableAscii - added 'Q' to similar characters regex
* updated Get-RandomDate - changed 'return' to 'break' in error condition
* updated Get-SQLDatabase - changed 'return' to 'break' in error condition
* updated Get-SQLIndexFragmentation - changed 'return' to 'break' in error condition
* updated Get-SQLStoredProcedure - changed 'return' to 'break' in error condition
* updated Get-ShortName - added -LiteralPath for explictly named paths (no wildcards), proper handling of multiple paths with wildcards
* updated Get-UrlContent - changed 'return' to 'break' in error condition
* updated Get-WordCount - function would throw errors if it encountered PowerShell keywords, implemented work around
* updated Get-Wordlist - added -Full to use longer > 370,000 word list resource, moved word list file to .\Resources
* updated New-ColorPicker - to reflect its icon file moving to .\Resources
* updated New-DatePicker - to reflect its icon file moving to .\Resources
* updated New-FontPicker - to reflect its icon file moving to .\Resources
* updated New-InputBoxSecureString - to reflect its icon file moving to .\Resources, changed 'return' to 'break' in error condition
* updated New-RandomPassword - added -FullWordlist to use longer wordlist file. Added 'Q' to similar regex
* updated New-Screenshot - changed 'return' to 'break' in error condition
* updated Optimize-SQLIndexFragmentation - changed 'return' to 'break' in error condition
* updated Optimize-SQLStoredProcedure - changed 'return' to 'break' in error condition
* updated Remove-TeamsCache - changed 'return' to 'break' in error condition
* updated Set-Display - changed class name from 'API' to 'PFAPI' to prevent conflict, changed name of internal variable
* updated Set-SpeakerVolume - added -Adjust parameter so you can adjust volume up or down
* updated Start-AdReplication - changed hard coded -ThrottleLimit from 8 to [environment]::ProcessorCount so that it determines number of processors on the fly
* updated Test-PasswordComplexity - removed dependency on Get-PrintableAscii
'@


            # Flag to indicate whether the module requires explicit user acceptance for install/update/save
            # RequireLicenseAcceptance = False

            # External dependent modules of this module
            # ExternalModuleDependencies = ''

        } # End of PSData hashtable

    } # End of PrivateData hashtable

    # HelpInfo URI of this module
    # HelpInfoURI = ''

    # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
    # DefaultCommandPrefix = ''

}