"Computer Science" teachers shouldn't be having students work in e ither batch or Powershell. That is the domain of IT administration, not Computer science.
Even for administration purposes Powershell's position can be dubious.
it is often regarded as a Windows equivalent for Bash, but it is nowhere near the flexibility of Bash; where Bash and other Linux CLI interfaces adhere strictly to a paradigm where everything is effectively a text stream, Powershell deals in discrete objects. it's "paradigm" is that you send objects around to other cmdlets and hope they understand the specific strong types that you are sending around as boxed arrays.
As a prime example, get-childitem returns a generic object array:
PS C:\>(get-childitem "HKLM:\Software").GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
But the actual types of each element change depending on the argument. In this case the specific Type of each array element is a boxed Microsoft.Win32.RegistryKey:
PS C:\> (get-childitem "HKLM:\Software")[2].GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False RegistryKey System.MarshalByRefObject
But enter a file path, and suddenly it's no longer the case. It's still a Array of Objects, but now it contains two different types. FileInfo and DirectoryInfo, as it returns the directories and Files in the given path. Both can be handled as a System.IO.FileSystemInfo of course but strong typing IMO has no place in a shell interface.
PS C:\> (get-childitem "C:\")[0].GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True DirectoryInfo System.IO.FileSystemInfo
Personally I think Powershell is a poor shell interface because it attempts to be a .NET Language, but it also makes a poor scripting/batch language because it intentionally exposes itself as effectively a programming environment and thus shares very little syntax with other shell interfaces, nor with other .NET languages. It's not an equivalent to Bash as much as it is an entirely new shell language that uses a completely different paradigm entirely from Bash, so the comparison is so invalid as to be useless.