# [PowerShell] 6, <s>244</s> 254 bytes

[De Bruijn sequence](https://en.wikipedia.org/wiki/De_Bruijn_sequence) is a good idea. Thanks to [Level River St](https://codegolf.stackexchange.com/users/15599/level-river-st)

<!-- language-all: lang-powershell -->

 param($w,$h)for(;$z='A'..'Z'|?{"Z$x"-notmatch-join"$x$_"[-2..-1]}){$x+=''+$z[0]}$v=random 9
 1..$h|%{$y=$_+$v
 ,(($r=1..$w)|%{"\ $($x[$y+$_-1]) /"})+,($r|%{$x[$_-1]+' X '+$x[$_]})+,($r|%{"/ $($x[$y+$_]) \"})|%{$_-join' | '}
 ,'-----'*$w*($_-ne$h)-join'-+-'}

[Try it online!][TIO-kd5ggfkq]

[PowerShell]: https://github.com/TryItOnline/TioSetup/wiki/Powershell
[TIO-kd5ggfkq]: https://tio.run/##TZDRboMwDEXf@Yoo8uakISn0raqiaX8xlSKEVio2FVJlVaGFfDtztofNb773Hsv2xQ2N/2qb83mBE7NsWi61rzsBQwqtPDkvdvCw@IrG4B7nl4nvYeS6d9euvr63@tN99BxGqHihN8bovAxyglFZRAWPIisD3Kyv@6Pr2DbJjYF2fprgbqFScEtSIcDbKA@SdH5gIGAs4K6golmSrXmQKqVQpMiIqkL2xmh8bMs/m6//wYQeCI1U9bMksplhSFLUsXAFw0qQ1Td05m9AK41hCUnyTJ/IM7bJlm8 "PowerShell – Try It Online"

 1. I've adapted [my answer](https://codegolf.stackexchange.com/a/173125/80745) from the topic [Generate the shortest De Bruijn](https://codegolf.stackexchange.com/questions/42728/generate-the-shortest-de-bruijn) for the case `{String:'A'..'Z', n:2}`.
 2. The script loop by this sequence twice: each tail take two chars by row and by column
 3. The shortest De Bruijn sequence contains 676 chars. That's enough for 255 rows and for 255 columns
 4. The script add `random 9` to row numbers to comply with the random requirement
 5. The last line fixed. Output contains extra trailing newline

[No-duplicate test](https://tio.run/##TY7haoMwFIX/5ynu5G5RnGEW@mOUUMbeolIktLFxaCIxVlvNszvtBtuFy718h3M4jemlbZWsqhkL4DDOjbCiDrF/RRUVxoY7vHP6QRmjBzrtx@CAQ5Bo42rhTir5MqUOcMA8yJINY0l69NGIQ8wpjfGevR09XrkV@mxqeCcpY6im5xFvHPMYrw/Qr2DI8BZjvvjj9c9/zop@wZrsZ08InrumKk/CyXbp@7K03my3j50u1nQNTL2SVsKn6bSD5OIgJWURPv3zRTASWIYq0YI28KdQ4udv "PowerShell – Try It Online") generates `####` strings instead ASCII tails and is looking for duplicates.