( kpocza | 2016. 08. 19., p – 22:55 )

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.