For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

proxicon's avatar
proxicon
Icon for Altostratus rankAltostratus
Aug 23, 2022
Solved

Create a IFile {system level} via API - Powershell

Hi All, Attempting the following: 1: Create iFile system level 2: Update existing iRule-> iFile referance the the file uploaded in step 1. Im getting stuck at step 1, any assistance creatly appre...
  • proxicon's avatar
    proxicon
    Aug 24, 2022

    Found my fault... JRahm & Patrik_Jonsson this was after my long reply to your other post JRahm (and yes it works on a POST method)... I had the file name in the URL overload specified on the initial create request, it should not be in there...

    so this..

     

     

    $File_Name = 'MyFile'
    $url       = "{0}{1}{2}" -f $big_ip, "/mgmt/tm/sys/file/ifile/",$File_Name
    
    $headers = @{
        'Content-Type'    = 'application/json'
        'X-F5-Auth-Token' = $token
    }
    
    $body = @{
        'name'            = $File_Name
        'source-path'     = "file:/var/config/rest/downloads/$File_Name"
    } | ConvertTo-Json -Compress
    
    $result = Invoke-RestMethod -Method post -Uri $url -Headers $headers -Body $body 

     

     


    needs to be:

     

     

    $File_Name = 'MyFile'
    $url       = "{0}{1}" -f $big_ip, "/mgmt/tm/sys/file/ifile/"
    
    $headers = @{
        'Content-Type'    = 'application/json'
        'X-F5-Auth-Token' = $token
    }
    
    $body = @{
        'name'            = $File_Name
        'source-path'     = "file:/var/config/rest/downloads/$File_Name"
    } | ConvertTo-Json -Compress
    
    $result = Invoke-RestMethod -Method post -Uri $url -Headers $headers -Body $body

     

     

     without the file name in the initial overload.

    Hope this helps some future person 🙂 
    Off to the next challange.

    Bonus: Retyped to splat (overload definition) - because why not.

     

     

    # Create a IFile {system level} 
    $File_Name = 'MyFile'
    $Uri       = "{0}{1}" -f $big_ip, "/mgmt/tm/sys/file/ifile/"
    
    # Construct overload definition
    $Param_InvokeRestMethod = @{
        headers = @{
            'Content-Type'    = 'application/json'
            'X-F5-Auth-Token' = $token
        }
    
        body = @{
            'name'            = $File_Name
            'source-path'     = "file:/var/config/rest/downloads/$File_Name"
        } | ConvertTo-Json -Compress
    
        Method = 'post'
    
        Uri = $Uri
    }
    
    # Post & capture result
    $result = Invoke-RestMethod @Param_InvokeRestMethod