After some effort I converted it into PowerShell YAY!
[Microsoft.SharePoint.SPList] $list = $web.Lists["Stakeholders Register"];
if(($list.Fields["Job Number"] -ne $null) -and ($list.Fields["Role within project"] -ne $null)) {
$fieldReorderable = [string]::Empty;
$fieldNonReorderable = [string]::Empty;
$firstField = "Role_x0020_within_x0020_project";
$secondField = "Job_x0020_Number";
foreach ($element in $list.Fields) {
if ($element.Reorderable)
{
if ($element.InternalName -eq $firstField)
{
$fieldReorderable += "<Field Name='" + $firstField + "'/>\r\n";
$fieldReorderable += "<Field Name='" + $secondField + "'/>\r\n";
}
if ($element.InternalName -ne $secondField -and $element.InternalName -ne $firstField)
{
$fieldReorderable += "<Field Name='" + $element.InternalName + "'/>\r\n";
}
}
elseif(-not($element.Reorderable))
{
$fieldNonReorderable += "<Field Name='" + $element.InternalName + "'/>\r\n";
}
}
$fieldList = [string]::Format("<Fields>{0}{1}</Fields>", $fieldReorderable, $fieldNonReorderable);
$reorderMethodFormat = '<?xml version="1.0" encoding="UTF-8"?><Method ID="0">' +
'<SetList Scope="Request">{0}</SetList>' +
'<SetVar Name="Cmd">REORDERFIELDS</SetVar>' +
'<SetVar Name="ReorderedFields">{1}</SetVar></Method>';
$reorder = [string]::Format($reorderMethodFormat, $list.ID, [Microsoft.SharePoint.Utilities.SPHttpUtility]::HtmlEncode($fieldList));
$web.AllowUnsafeUpdates = $true;
$res = $web.ProcessBatchData($reorder);
$web.AllowUnsafeUpdates = $false;
}