Karoi Vulka
Karoi Vulka

Reputation: 1

Issue with get shortcut function not loading in separate script

So I have the following script I am trying to run which keeps erroring out

    . .\stshortcut.ps1 | 
    Get-Shortcut . |
    Where Target -eq "cmd.exe" |
    %{$myPath, $myNewName = $null;
    Write-Warning "Processing $($_.Link)";
    If (-Not (Test-Path .\BadShortcuts -PathType Container)) {New-Item -                                         
    WhatIf -ItemType Directory BadShortcuts | Out-Null};
    [string]$myPath = $_.Arguments.Split()[-1] -replace '"';  
    [string]$myNewName = $_.Link -replace "\.lnk$";
    Rename-Item -WhatIf -Force -Path $myPath -NewName $myNewName;
    (Get-Item -Force $myNewName).Attributes = '';
    Move-Item -WhatIf $_.LinkPath .\BadShortcuts;}`

the error I get is as follows

    The term 'Get-Shortcut' is not recognized as the name of a cmdlet,   
    function, script file, or operable program. Check the spelling of the 
    name, or if a path was included, verify that the path is correct and try 
    again.
    At C:\Shared\APPS\FixShortcutX2.ps1:1 Char 13
    + Get Shortcut <<<<< . |
         + CategoryInfor          : ObjectNotFound: (Get-Shortcut:String)[],   
         CommandNotFoundException  
         + FullyQualifiedErrorID : CommandNotFoundException

the stshortcut.ps1 script has the get-shortcut and set-shortcut functions and are called to do such - I got this script from

https://www.reddit.com/r/PowerShell/comments/4su2jg/zeroday_malware_renamed_folders_on_a_shared_drive/ which is an answer script to fix a macro virus from a word doc attachment - sent from a spoofed email address -

Any assistance is GREATLY appreciated

EDITx2 after some further helpful advice and editing I now am receiving the following

Where-Object : Cannot bind parameter 'FilterScript' . Cannot convert the "Target" value of type "System.String" to type "System.Management.Automation.ScriptBlock". At C:\Shared\Apps\FixShortcutX2.ps1:3 char:6 + Where <<<<< Target -eq "cmd.exe" | +CategoryInfo : InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand

Upvotes: 0

Views: 105

Answers (1)

Mathias R. Jessen
Mathias R. Jessen

Reputation: 174505

You need to dot-source stshortcut.ps1 before you can use Get-Shortcut.

Change the first line:

.\stshortcut.ps1 |

To

. .\stshortcut.ps1

Upvotes: 0

Related Questions