# Powershell für Bash-Kenner

### Remote auf andere Rechner

Wie benutze ich Powershell um schnell auf ein anderes System zu kommen?

#### via SSH

ssh user@remotehost

#### mit persönlichem USER

   
Windows nimmt nicht einfach Username/Passwort, wäre auch zu einfach.  
Ein Credential-Object muss erstellt werden das PW wird dabei interaktiv abgefragt. Das darf dann auch recycled werden

`$mycred = Get-Credential -UserName "$env:USERDOMAIN\$env:USERNAME" -Message "Bitte PW eingeben"`

wenn jemand gerne selber tippt:  
 `$mycred = Get-Credential -UserName "DOMAIN\USER" -Message "Bitte PW eingeben"`

Die beiden variablen $env:USERDOMAIN und $env:USERNAME werden durch Windows gesetzt und sind in jeder Powershell-Sitzung vordefiniert.

Der Login selbst erfolgt über:

`Enter-PSSession -ComputerName SERVERNAME -Credential $mycred`

#### mit technischem USER

```Powershell
$User = "Domain01\Techuser"
$PWord = ConvertTo-SecureString  -AsPlainText -Force -String "P@sSwOrd"
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
```

Der Login selbst erfolgt über:

`Enter-PSSession -ComputerName SERVERNAME -Credential $Credential`

### In Dateien suchen

#### grep

```Powershell
alias sls='select-string'
sls "something" *.txt
```

#### tail

```Powershell
alias gc='get-content'

# Beispiel: Letzte 15 Zeilen
gc datei.txt -Last 15

# Beispiel: "tail -100f"
gc datei.txt -Last 100 -Wait
```

#### head

```Powershell
alias gc='get-content'

# Beispiel: Die ersten 15 Zeilen
gc datei.txt -First 15
```

### Dateien Suchen

#### find

```Powershell
alias gci='Get-Childitem'

# Beispiel: Liste von Dateien erstellen
gci c:\PATH -File -Recurse

# Beispiel: Fehlerunterdrücken bei Berechtigungsfehlermeldungen (Powershell als admin starten ist an der Stelle meist von Vorteil)
gci c:\PATH -File -Recurse -ea SilentlyContinue
```

#### locate

Gibt es (bisher) nicht

### Laufwerke anzeigen

#### df

```Powershell
get-psdrive
```

Mit freundlicher Genehmigung von Claas Biering