“Runtime error Exception has been thrown by the target of an invocation” from Script task

后端 未结 6 1331
后悔当初
后悔当初 2020-12-06 17:41

I have a SSIS package with a script task, I get the following error when i try to run it in my local system. It works fine for my collegues as well as in production. However

6条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-06 17:52

    This is just a different situation and not intended to be the end all be all solution for everyone.

    When I was installing my DLLs into the GAC I forgot to run my script as Administrator and the script ran silently without error as though it was working.

    I felt really dumb when I realized that's what I did wrong. Hopefully this can help prevent other people from wasting time on something so silly.

    For reference this is what I use for installing my DLLs into the GAC and I modified it to tell me when I am not running it as Administrator now:

    #https://superuser.com/questions/749243/detect-if-powershell-is-running-as-administrator
    $isAdmin = ([Security.Principal.WindowsPrincipal] `
      [Security.Principal.WindowsIdentity]::GetCurrent() `
    ).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
    
    if($isAdmin -eq $false)
    {
        Write-Host "You have to run this script as Administrator or it just won't work!" -ForegroundColor Red
    
        return;
    }
    
    $strDllPath = "C:\PathToYourDllsHere\"
    
    #Note that you should be running PowerShell as an Administrator
    [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")            
    $publish = New-Object System.EnterpriseServices.Internal.Publish            
    
    
    $arr = @(
        "YourDLL01.dll",
        "YourDLL02.dll",
        "YourDLL03.dll"
    )
    
    get-date
    
    foreach($d in $arr)
    {
        $p = ($strDllPath + $d);
    
        $p
    
        $publish.GacInstall($p);
    }
    
    #If installing into the GAC on a server hosting web applications in IIS, you need to restart IIS for the applications to pick up the change.
    #Uncomment the next line if necessary...
    #iisreset
    

    Credit for how to determine if your PowerShell script is running in Admin mode or not: https://superuser.com/questions/749243/detect-if-powershell-is-running-as-administrator

提交回复
热议问题