find.psm1
<#
.NOTES ======================================================================== Created by: Byran Schomburg Website: www.schomburg.dev Copyright: (c) 2025 Byran Schomburg. All rights reserved. ======================================================================== #> #TODO: Located in /PC/find/ function get-fixed-drives { return $([System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -eq 'Fixed'}).rootdirectory.name } function find-folder { <# .SYNOPSIS Searches for folders with a specific name. .DESCRIPTION Searches for a specific folder. You can add the '-exact' parameter to get folders that exactly match the search. You can also specify a path. .EXAMPLE PS> find-folder test #> param ( [string] $name = "default", [string] $path, [switch] $exact ) if ($path) { $path = Join-Path -Path $path -ChildPath "" if ($exact) { $scriptBlock = [scriptblock]::Create("`$_.PSIsContainer -eq `$true -and `$_.Name -eq `"$name`"") Get-ChildItem -LiteralPath $path -Recurse -force -EA 0 | Where $scriptBlock | Select Fullname } else { $name = "*$name*" $scriptBlock = [scriptblock]::Create("`$_.PSIsContainer -eq `$true -and `$_.Name -like `"$name`"") Get-ChildItem -LiteralPath $path -Recurse -force -EA 0 | Where $scriptBlock | Select Fullname } } else { $drives = get-fixed-drives if ($exact) { $scriptBlock = [scriptblock]::Create("`$_.PSIsContainer -eq `$true -and `$_.Name -eq `"$name`"") foreach($drive in $drives){ Get-ChildItem -LiteralPath $drive -Recurse -force -EA 0 | Where $scriptBlock | Select Fullname } } else { $name = "*$name*" $scriptBlock = [scriptblock]::Create("`$_.PSIsContainer -eq `$true -and `$_.Name -like `"$name`"") foreach($drive in $drives){ Get-ChildItem -LiteralPath $drive -Recurse -force -EA 0 | Where $scriptBlock | Select Fullname } } } } function find-file { <# .SYNOPSIS Searches for files with a specific name. .DESCRIPTION Searches for a specific file. You can add the '-exact' parameter to get files that exactly match the search. You can also specify a path. .EXAMPLE PS> find-file test #> param ( [string] $name = "default", [string] $path, [switch] $exact ) if ($path) { $path = Join-Path -Path $path -ChildPath "" if ($exact) { $scriptBlock = [scriptblock]::Create("`$_.Name -eq `"$name`"") Get-ChildItem -LiteralPath $path -Recurse -Force -EA 0 | Where $scriptBlock | Select Fullname } else { $name = "*$name*" $scriptBlock = [scriptblock]::Create("`$_.Name -like `"$name`"") $drives = $([System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -eq 'Fixed'}).rootdirectory.name } } else { $drives = if ($path) { @($path) } else { get-fixed-drives } if ($exact) { $scriptBlock = [scriptblock]::Create("`$_.Name -eq `"$name`"") foreach($drive in $drives){ Get-ChildItem -LiteralPath $drive -Recurse -Force -EA 0 | Where $scriptBlock | Select Fullname } } else { $name = "*$name*" $scriptBlock = [scriptblock]::Create("`$_.Name -like `"$name`"") foreach($drive in $drives){ Get-ChildItem -LiteralPath $drive -Recurse -Force -EA 0 | Where $scriptBlock | Select Fullname } } } } Export-ModuleMember -function * # SIG # Begin signature block # MIIFpgYJKoZIhvcNAQcCoIIFlzCCBZMCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB8pcTdrJKVYiZk # 15gDogjY82FKVx8gvREr+cpxdm6m/qCCAx4wggMaMIICAqADAgECAhAyQLVt3L/9 # i0NfCldSuaRBMA0GCSqGSIb3DQEBCwUAMBgxFjAUBgNVBAMMDUJTLVcxMU0tU0NI # T00wHhcNMjUwMTI4MTEwMTIyWhcNMjYwMTI4MTEyMTIyWjAYMRYwFAYDVQQDDA1C # Uy1XMTFNLVNDSE9NMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtJt0 # QuCyfwAyWKZW/iSiDzUn1KMGe3y3OnLfaQaLzxI+MjoZBOoA3uYLOBphX/CeUPKy # fil2xPKsvpgC33QI+mnfpOnezzUt8XB58VkWENQiO842Uczw7wVUDf5n0uZ8ki5U # K2pwbP6yayFgv8S7toCsxm1P2l0cGYRKu76IPuRxbWiLmersuUibVC1WQCq78OkT # rWJMCAaMlZJ/EBu0FZ97kPhBNf7R5U2quaftlRsz0FxafJIrn4SA+UFLWAx3/2tI # 8VhTmTnXfFvaYu59vxwNUdvrcaYfC7W0tNjsuD5OzCTlZK3nLAtbqIbMUtF1HJVJ # WJCveBWPFA3jjOzaAQIDAQABo2AwXjAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAww # CgYIKwYBBQUHAwMwGAYDVR0RBBEwD4INQlMtVzExTS1TQ0hPTTAdBgNVHQ4EFgQU # kdGu2/UyLYYJq20ttdSSY2/DHGMwDQYJKoZIhvcNAQELBQADggEBACPZYnQEVJJn # MUR6bv0/2YPDw5+/ECGwvNNbepLg2t4esgkV8rie+cNyrM3rUI4a/5I1OH9HTFvI # yX72/eDYzrszKu9YlvvXHNwOHgNMjvbaKYUS5c+W+OE+YwO0rzTQLn0QBrXefAWd # Zf+ifTfGPT7bUa9UbQunQj4qqTiccBaRS4yHS7c2pW9DEQJXUEcCJ+hMoFb6ddWu # rzuhGD+StQ5ngyriVjA005oge8iYb0Q9wfnkzLM37RgZWipzyZngkTYzOZz5CiPg # CfmwX3QpJy64P0dS23QYPShGx2A9Vr6uBpfXJ6LYgzifZbrw0DTo60XaN7YPHpkr # LpIkHls3NlkxggHeMIIB2gIBATAsMBgxFjAUBgNVBAMMDUJTLVcxMU0tU0NIT00C # EDJAtW3cv/2LQ18KV1K5pEEwDQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIB # DDEKMAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEE # AYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQguvYRSf69Z2Fz # Aib9eAzwOljDwyxoXefWDd5LdpqHZYUwDQYJKoZIhvcNAQEBBQAEggEAb8MZJmJ0 # eg36hz/MliJ0ZUvpiBIgdHHdjhEJXDU50/tF08PkZNqcT6SVXtVYcgnQQVLryLI2 # hfhZQZ/gwkjCnMdjkwXkZ+V7vxir9Z+bncniocImJmDgYDriKhFn1JbAIUiPdGsk # ov5jQeLmOKffDWyEwr6zcvMjPc1+qM82UtXHkZyklX3y4XEvl2y3rtOFPj+0qKuZ # RMLTrlX3Gvd4TH+Jb/o5uURZ1BF7jfz2mvVTxDasiRzhxmroD+tOwjI3cqi96V7j # diQ/ZmGMy7i/nIZgejaAZMIBEpdCpqBG400cCDoALfaKes3RTtDZZQFz12o/NsNK # mckeD3zmAIDhyA== # SIG # End signature block |