OK. Maybe i wasnt far wrong. It seems that it matters which order you put the arguments hashtable. I was suprised by that. I was desperate enough to try swapping around URI and Target because i couldnt see what else i was doing wrong   Invoke-CimMethod -CimSession $session -inputobject $CIM_SftInst -MethodName "InstallFromURI" -Arguments @{URI="192.168.0.111/R620.EXE" ; Target=[ref]$CIM_BIOS} returns: Job            : JobReturnValue    : 4096PSComputerName : 10.xx.xx.xx
Hello again all. OK, so. Another day another post Im not into remote firmware updates, and I'm using this guide: [URL] Again I'm stuck trying to get this working in powershell.   The guide im using above says:   The method input has two arguments. First is the URI property that instructs the method of transfer. (im fine with that) Second is the Target property that contains the endpoint reference or EPR that represents the attribute instance to operate on. You used enumerate in the previous sections to get an inventory of device firmware levels. You will use  the same class instances for the install method, although you will need to add the EPR enumeration mode and rerun the command (thats there i think im going wrong)    Heres what im doing:   1. Create a varilable containing the instance of the BIOS service to update, from CIM_SoftwareIdentity: $CIM_SoftwareIdentURI = "[URL]"$CIM_BIOS = Get-CimInstance -CimSession $session -ResourceUri $CIM_SoftwareIdentURI | where {$_.elementname -eq "BIOS" -and $_.status -eq "installed"} 2. Create a variable containing an instance of the DCIM_SoftwareInstallationService $CIM_SftInstSvsURI = "[URL]"$CIM_SftInst = Get-CimInstance -CimSession $session -ResourceUri $CIM_SftInstSvsURI    3. invoke the InstallFromURI() method on the instance of the DCIM_SoftwareInstallationService, passing in the target and URI parameters required Invoke-CimMethod -CimSession $session -InputObject $CIM_SftInst -MethodName "InstallFromURI" -Arguments @{ target=$CIM_BIOS;URI="ftp://192.168.0.111/R620_BIOS_WIN_0.3.18.EXE"}   The response i get back is: Message        : Either URI or Target or both are missing OR exceeding in lengthMessageID      : SUP003ReturnValue    : 2PSComputerName : 10.xx.xx.xx   The URI is a litteral so i doubt that theres anything wrong with that. I suspect theres something wrong with the way I'm passing the target I tried passing in as a reference to the target in the following way also: { target=[ref]$CIM_BIOS;URI="ftp://192.168.0.111/R620_BIOS_WIN_0.3.18.EXE"} I get the same result  Can anyone help put me right on how i should pass in the "..target property that contains the endpoint reference or EPR that represents the attribute instance to operate on"   it seems that im more stupid than i thought and i cant figure it out.     :)      
Remote Firmware Update - with Powershell v3