Feltettem az open PowerShell-t Ubuntu on Windows-ra, mert lusta voltam VM-et indítani.
Az ebben a környezetben bugos readline implementáción kiszenvedtem a következő parancsot:
(get-process -processname "powershell").Modules
Ez gyakorlatilag megmondja, hogy a PowerShell process milyen modulokat töltött be.
Ennek eredménye a következő:
Size(K) ModuleName FileName
------- ---------- --------
88 powershell /opt/microsoft/powershell/6.0.0-alpha.9/powershell
44 libnss_nis-2.19.so /lib/x86_64-linux-gnu/libnss_nis-2.19.so
92 libnsl-2.19.so /lib/x86_64-linux-gnu/libnsl-2.19.so
36 libnss_compat-2.19.so /lib/x86_64-linux-gnu/libnss_compat-2.19.so
92 libresolv-2.19.so /lib/x86_64-linux-gnu/libresolv-2.19.so
20 libnss_dns-2.19.so /lib/x86_64-linux-gnu/libnss_dns-2.19.so
40 libnss_files-2.19.so /lib/x86_64-linux-gnu/libnss_files-2.19.so
16 libpsl-native.so /opt/microsoft/powershell/6.0.0-alpha.9/libpsl-native.so
7424 System.Private.CoreLib.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/System.Private...
552 Microsoft.PowerShell.CoreCLR.AssemblyLoadContex... /opt/microsoft/powershell/6.0.0-alpha.9/Microsoft.Powe...
412 Microsoft.PowerShell.ConsoleHost.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/Microsoft.Powe...
412 Microsoft.PowerShell.ConsoleHost.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/Microsoft.Powe...
29048 System.Management.Automation.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/System.Managem...
29048 System.Management.Automation.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/System.Managem...
224 Microsoft.PowerShell.Security.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/Microsoft.Powe...
224 Microsoft.PowerShell.Security.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/Microsoft.Powe...
708 Microsoft.PowerShell.PSReadLine.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/Microsoft.Powe...
708 Microsoft.PowerShell.PSReadLine.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/Microsoft.Powe...
1260 Microsoft.PowerShell.Commands.Utility.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/Microsoft.Powe...
1260 Microsoft.PowerShell.Commands.Utility.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/Microsoft.Powe...
1092 Microsoft.PowerShell.Commands.Management.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/Microsoft.Powe...
1092 Microsoft.PowerShell.Commands.Management.ni.dll /opt/microsoft/powershell/6.0.0-alpha.9/Microsoft.Powe...
52 System.Native.so /opt/microsoft/powershell/6.0.0-alpha.9/System.Native.so
22960 libicudata.so.52.1 /usr/lib/x86_64-linux-gnu/libicudata.so.52.1
2016 libicui18n.so.52.1 /usr/lib/x86_64-linux-gnu/libicui18n.so.52.1
1424 libicuuc.so.52.1 /usr/lib/x86_64-linux-gnu/libicuuc.so.52.1
52 System.Globalization.Native.so /opt/microsoft/powershell/6.0.0-alpha.9/System.Globali...
2196 libclrjit.so /opt/microsoft/powershell/6.0.0-alpha.9/libclrjit.so
132 liblzma.so.5.0.0 /lib/x86_64-linux-gnu/liblzma.so.5.0.0
64 libunwind-x86_64.so.8.0.1 /usr/lib/x86_64-linux-gnu/libunwind-x86_64.so.8.0.1
48 libunwind.so.8.0.1 /usr/lib/x86_64-linux-gnu/libunwind.so.8.0.1
16 libuuid.so.1.3.0 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
28 librt-2.19.so /lib/x86_64-linux-gnu/librt-2.19.so
6480 libcoreclr.so /opt/microsoft/powershell/6.0.0-alpha.9/libcoreclr.so
772 libhostpolicy.so /opt/microsoft/powershell/6.0.0-alpha.9/libhostpolicy.so
628 libhostfxr.so /opt/microsoft/powershell/6.0.0-alpha.9/libhostfxr.so
1768 libc-2.19.so /lib/x86_64-linux-gnu/libc-2.19.so
88 libgcc_s.so.1 /lib/x86_64-linux-gnu/libgcc_s.so.1
1044 libm-2.19.so /lib/x86_64-linux-gnu/libm-2.19.so
920 libstdc++.so.6.0.19 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
100 libpthread-2.19.so /lib/x86_64-linux-gnu/libpthread-2.19.so
12 libdl-2.19.so /lib/x86_64-linux-gnu/libdl-2.19.so
140 ld-2.19.so /lib/x86_64-linux-gnu/ld-2.19.so
Tehát van itt .NET natív-től kezdve .NET Core clr-ig minden.
Érdekesség, hogy míg Windows-on a ps alias a Get-Process-re, Linuxon a natív Linux-os ps fut. Vagy pl. Windows-on a dir és az ls is alias a Get-ChildItem-re, itt csak a dir és meghagyták a nativ ls-t.
Elég gáz:
(ls)[0].GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False String System.Object
Tehát, vissza a középkorba. Szöveget kell parsolni, ha valaki az ls kimenetét akarja értelmezni Linuxon PowerShellből és derogál a dir vagy a Get-ChildItem.