Tips & Tricks PowerShell

Publicat la Tips & Tricks PowerShell – DevForum Blogs

Mi se pare că PowerShell are parte de mult mai puțină atenție decât merită. Pentru ce fac eu, mi se pare mult mai intuitiv/expresiv/user-friendly/readable decât Bash. Fac comparația asta pentru că (inițial) Microsoft a vrut ceva în genul Bash pe Windows. Și au mers foarte mult pe inspirație: pipes, alias-uri pentru comenzi (astfel încât, până…

4 Likes

Problema Power Shell e că e un sistem de scripting pentru un sistem de operare care foarte necomun pe servere, și care și atunci când e, unul din atu-uri este GUI și ease of use.

După ce ani la rândul lăudau windows server pentru GUI și au creat un ecosistem în care cei care îl aleg, așteaptă GUI, nu au de ce să se mire că powershell se folosește foarte putin.

1 Like

Eu il folosesc.
Cei-i drept folosesc comnezi simple in el

Mi-am instalat si noul terminal si am si PS, CMD si GitBash acolo

Mi se pare mai modern decat bash-ul (care este cam la fel de prin anii '70 - '80). Insa, in stilul Microsoft, anumite lucruri mi s-au parut complicate sau ciudate, cum ar fii >, <, <<, >>. Unul din ei este cu pipa - |

Plus ca are .net under the hood, deci ai acces la api-urile de acolo. Ca in C# cred

Este disponibil pe toate platformele. Nu e instalat implicit ce-i drept, dar ai opțiunea asta :slight_smile:

1 Like

Bun dar cine și de ce ar deschide cutia pandorei și să lucreze cu powershell pe Linux?

Încă un snippet util: bookmarks.

Se „administrează” doar manual (primele linii), dar pentru mine e suficient, având în vedere că nu schimb atât de des bookmarks.

În terminal scrii ori g ssh și ajungi în ~/.ssh ori g + tab și-ți arată bookmarks existente.

$ntzBookmarks = @{
  ssh="~/.ssh";
  devforum="d:\projects\devforum.ro";
}

function g {
    param($p = '')
    if ( [string]::IsNullOrEmpty($p) ) { 
      return
    }

    if( $ntzBookmarks.ContainsKey($p) ) {
      Set-Location $ntzBookmarks[$p]
    } elseif (Test-Path -Path $p) {
      Set-Location $p
    }
}

Register-ArgumentCompleter  -CommandName g -Native  -ScriptBlock {
    param($wordToComplete, $commandAst, $cursorPosition)
    $ntzBookmarks.GetEnumerator() | 
      Where-Object { $_.key -like "$wordToComplete*" } | 
      ForEach-Object { 
        "'$($_.Value)'"
    }
}