jack_nuclear, итак, по порядку.
Во-первых, это ни разу не «отдаётся страница для роботов». Это
обычное содержимое, который получает
любой клиент в ответ на свой http-запрос. Это надо Вам чётко и точно понимать.
Во-вторых, после того, как данное содержимое получено, для клиентов, наподобие wget.exe, curl.exe, менеджеров загрузки и т.п. всё закончено. По мета-тэгам (или строя свои собственные предположения при отсутствии оных) они определяют, что именно им, собственно, было передано, сохраняют (возможно, перекодировав) это содержимое в файл потребного формата и заканчивают на этом свою работу. Они не занимаются ни парсингом содержимого, ни его размещением в окне — рендеринг (если это содержимое — html), ни исполнением скриптов.
Другое дело — браузеры. Получив содержимое, они начинают его парсить, выявляя все внешние вставки (например, ссылки на таблицы стилей, ссылки на изображения, ссылки на скрипты и т.п.) и загружая их. После чего начинают размещение содержимого в своём окне. Затем, когда доходит дело, начинается исполнение скриптов, которое может вмешиваться непосредственно и в само содержимое html-страницы, подчас радикально меняя его. В том числе, появляющиеся в содержимом новые скрипты могут перезапускать весь процесс заново.
В Вашем примере именно это и происходит — ссылка с классом ModDetails_hidden--2Rtru не содержится непосредственно в полученном html-коде страницы, а генерируется скриптом на клиенте, исполняющемся в браузере.
Посему, можно сделать, например, так:
Скрытый текст
Код:

Set-Variable -Name 'READYSTATE_COMPLETE' -Option 'Constant' -Value 4
$oIE = New-Object -ComObject 'InternetExplorer.Application'
$oIE.Navigate("https://wgmods.net/22/")
for($i = 0; $i -le 5; $i++) {
do {
Start-Sleep -Milliseconds 100
} until((-not $oIE.Busy) -and ($oIE.ReadyState -eq $READYSTATE_COMPLETE))
}
$oDocument = $oIE.Document
$oHtmlElement = $oDocument.GetElementsByClassName("ModDetails_hidden--2Rtru")[0]
Write-Host "HRef: $($oHtmlElement.href)"
$oIE.Quit()
Предугадать заранее, сколько приседаний «Ку»:
Скрытый текст
Код:

for($i = 0; $i -le 5; $i++) {
do {
Start-Sleep -Milliseconds 100
} until((-not $oIE.Busy) -and ($oIE.ReadyState -eq $READYSTATE_COMPLETE))
}
понадобится сделать, пока в теле страницы не появится потребный элемент, в общем и целом — невозможно.