PowerShell ist ein verteiltes, skalierbares, heterogenes Konfigurations- und Automatisierungs-Framework, das aus einer interaktiven Befehlszeilen-Shell und einer Skriptsprache für das Windows-Betriebssystem besteht. Es basiert auf .NET Framework, und es ermöglicht den Benutzern, die Systemaufgaben zu automatisieren und zu vereinfachen. Weitere Einzelheiten zu PowerShell finden Sie unter folgendem Link.
Lassen Sie uns in diesem kurzen Tutorial sehen, wie man PowerShell in Ubuntu 14.04/16.04/18.04 LTS und CentOS 7 64-Bit-Server-Editionen installiert.
Installieren Sie Windows PowerShell Core 6.0 unter Linux
PowerShell kann auf vielen gängigen Linux-Distributionen installiert werden, darunter Arch Linux, Debian, Ubuntu, Fedora, CentOS, SUSE. Hier habe ich Installationsanweisungen für Debian, Ubuntu und CentOS beigefügt.
Unter Ubuntu 14.04 LTS:
PowerShell-Repository-GPG-Schlüssel herunterladen und registrieren:
$ wget -q https://packages.microsoft.com/config/ubuntu/14.04/packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb
Aktualisieren Sie die Liste der Softwarequellen:
$ sudo apt-get update
Installieren Sie dann PowerShell mit dem Befehl:
$ sudo apt-get install -y powershell
Unter Ubuntu 16.04 LTS:
PowerShell-Repository-GPG-Schlüssel hinzufügen:
$ wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb
Aktualisieren Sie die Liste der Softwarequellen:
$ sudo apt-get update
Installieren Sie dann PowerShell mit dem Befehl:
$ sudo apt-get install -y powershell
Unter Ubuntu 18.04 LTS:
Registrieren Sie den GPG-Schlüssel des PowerShell-Repositorys:
$ wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb
Repository-Listen aktualisieren und PowerShell installieren:
$ sudo apt-get update
$ sudo apt-get install -y powershell
Auf Debian 8:
$ sudo apt-get install curl apt-transport-https
$ curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-jessie-prod jessie main"> /etc/apt/sources.list.d /microsoft.list'
$ sudo apt-get update
$ sudo apt-get install -y powershell
Auf Debian 9:
$ sudo apt-get install curl gnupg apt-transport-https
$ curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main"> /etc/apt/sources.list.d /microsoft.list'
$ sudo apt-get update
$ sudo apt-get install -y powershell
Unter CentOS 7:
PowerShell-Repository als root hinzufügen Benutzer:
# curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repo
Installieren Sie PowerShell:
# yum install -y powershell
Für andere Distributionen lesen Sie bitte die offizielle Installationsanleitung .
Wir haben jetzt PowerShell installiert. Als nächstes werden wir sehen, wie man es in Echtzeit verwendet.
Erste Schritte mit PowerShell
Bitte beachten Sie, dass sich PowerShell für Linux noch in der Entwicklungsphase befindet, sodass Sie auf einige Fehler stoßen. Treten Sie bei Fehlern dem PowerShell-Community-Blog bei (Der Link befindet sich am Ende dieses Artikels) und erhalten Sie Hilfe.
Führen Sie nach der Installation von PowerShell den folgenden Befehl aus, um die PowerShell-Konsole/-Sitzung aufzurufen.
pwsh
So sieht die PowerShell-Konsole auf meinem Ubuntu 18.04 LTS-Server aus.
PowerShell 6.1.2Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten. https://aka.ms/pscore6-docs Geben Sie „Hilfe“ ein, um Hilfe zu erhalten. PS /home/sk>
PowerShell
In der PowerShell-Sitzung erwähnen wir die Powershell-Befehle als Cmdlets , und wir erwähnen das PowerShell-Eingabeaufforderungszeichen als PS /> .
Das Arbeiten in PowerShell ist fast ähnlich wie in BASH. Ich habe einige Linux-Befehle in PowerShell ausgeführt. Es scheint, dass fast alle Linux-Befehle in der PowerShell funktionieren. Außerdem verfügt PowerShell über einen eigenen Befehlssatz (Cmdlets). Die TAB-Funktion (Autovervollständigung) funktioniert wie in BASH.
Löschen? Nun, lassen Sie uns ein paar Beispiele nennen.
PowerShell-Version anzeigen
Um die Version der PowerShell anzuzeigen, geben Sie Folgendes ein:
$PSVersionTable
Beispielausgabe:
Name Wert---- -----PSVersion 6.1.2PSEdition CoreGitCommitId 6.1.2OS Linux 4.15.0-45-generic #48-Ubuntu SMP Di Jan ...Platform UnixPSCompatibleVersions {1.0, 2.0, 3.0, 4.0 ...}PSRemotingProtocolVersion 2.3SerializationVersion 1.1.0.1WSManStackVersion 3.0
Wie Sie in der obigen Ausgabe sehen, ist die Version der PowerShell 6.1.2 .
Dateien erstellen
Um eine neue Datei zu erstellen, verwenden Sie 'New-Item' Befehl wie unten gezeigt.
New-Item ostechnix.txt
Beispielausgabe:
Verzeichnis:/home/skMode LastWriteTime Länge Name---- ------------- ------ ---------- 11.02.19 10:28 Uhr 0 ostechnix.txt
oder verwenden Sie einfach ">" wie unten gezeigt:
""> ostechnix.txt
Hier, "" - beschreibt, dass die Datei leer ist. ostechnix.txt ist der Dateiname.
Um einige Inhalte in der Datei anzuhängen, führen Sie den folgenden Befehl aus:
Set-Content ostechnix.txt -Value "Willkommen im OSTechNix-Blog!"
Oder
"Willkommen beim OSTechNix-Blog!"> ostechnix.txt
Anzeigen des Inhalts einer Datei
Wir haben einige Dateien aus der PowerShell erstellt. Wie sehen wir den Inhalt dieser Dateien? Ganz einfach.
Verwenden Sie einfach 'Get-Content' Befehl, um den Inhalt einer beliebigen Datei anzuzeigen.
Get-Content
Beispiel:
Get-Content ostechnix.txt
Beispielausgabe:
Willkommen beim OSTechNix-Blog!
Dateien löschen
Um eine Datei oder ein Element zu löschen, verwenden Sie 'Remove-Item' Befehl wie unten gezeigt.
Remove-Item ostechnix.txt
Lassen Sie uns mit dem Befehl überprüfen, ob das Element wirklich gelöscht wurde:
Get-Content ostechnix.txt
Sie sollten eine Ausgabe wie unten sehen.
Get-Content :Pfad '/home/sk/ostechnix.txt' kann nicht gefunden werden, da er nicht existiert.In Zeile:1 Zeichen:1+ Get-Content ostechnix.txt+ ~~~~~~~~~~ ~~~~~~~~~~~~~~~+ CategoryInfo :ObjectNotFound:(/home/sk/ostechnix.txt:String) [Get-Content], ItemNotFoundException+ FullyQualifiedErrorId :PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
Oder Sie können einfach das "ls" verwenden Befehl zum Anzeigen, ob die Datei existiert oder nicht.
Anzeigen der laufenden Prozesse
Um die Liste der laufenden Prozesse anzuzeigen, führen Sie einfach Folgendes aus:
Get-Process
Beispielausgabe:
NPM(K) PM(M) WS(M) CPU(s) ID SI ProcessName ------ ----- ----- ------ -- -- -- --------- 0 0,00 0,00 0,02 599 599 agetty 0 0,00 0,00 0,00 2385 385 Anacron 0 0,00 0,00 0,00 257 0 ATA_SFF 0 0,00 0,07 556 556 AUDITD 0 0,00 0,00 0,03 578 578 AVAHI-DAMONE 0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 590 578 avahi-daemon 0 0,00 0,00 0,05 2327 327 Bash 0 0,00 0,00 0,00 19 0 Bioset 0 0,00 0,00 0,00 352 0 Bioset 0 0,00 0,00 0,00 360 0 0 0,00 0,00 0,35 597 597 Crond 0 0,00 0,00 0,00 31 0 0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00). 0,11 586 586 dbus-Daemon 0 0,00 0,00 0,03 63 0 deferwq 0 0,00 0,01 0,93 585 585 firewalld 0 0,00 0,00 0,00 30 0 fsnotify_mark 0 0,00 0,00 0,00 43 0 ipv6_addrconf 0 0,00 0,00 0,02 94 0 kauditd 0 0,00 0,00 0,00 20 0 kblockd 0 0.00 0,00 0,00 14 0 kdevtmpfs 0 0,00 0,00 0,00 351 0 kdmflush 0 0,00 0,00 0,00 359 0 kdmflush 0 0,00 0,00 0,00 13 0 khelper 0 0,00 0,00 0,03 29 0 khugepaged 0 0,00 0,00 0,00 26 0 khungtaskd 0 0,00 0,00 0,00 18 0 kintegrityd 0 0,00 0,00 0.00 41 0 kmpath_rdac D 0 0,00 0,00 0,00 42 0 kpsmoused 0 0,00 0,00 0,00 28 0 ksmd 0 0,00 0,00 0,17 3 0 ksoftirqd/0 0,00 0,00 0,02 27 0 kswapd0 0 0,00 0,00 0,00 2 0 kthreadd 0 0,00 0,00 0,00 39 0 Kthrotld 0 0,00 0,00 0,01 23131333133313331333333333333333333333333333333333333333333333333333333333333333333333333333333133333333333131313131313133 0 kArbeiter/0:0 0 0,00 0,00 0,04 2369 0 kArbeiter/0:0H 0 0,00 0,00 0,00 2440 0 kArbeiter/0:1 0 0,00 0,00 0,05 2312 0 kArbeiter/0:2H 0 0,00 0,00 0,28 23/76 0 0,00 0,00 0,25 6 0 KWWER/U2:0 0 0,00 0,00 0,00 272 0 KWERKER/U2:2 0 0,00 0,00 0,01 473 473 LVMetad 0 0,00 0,00 0,02 2036 036 Master 0 0,00 0,00 21 0 md 0 0,00 0,00 0,00 7 0 Migration 0 Migration 036 Master 0 0,00 0,00 21 0 md 0 0,00 0,00 0,00 7 0 Migration 0 Migration 036 0,00 0,00 21 0 Md 0 0,00 0,00 0,00 7 0 Migration 036 Migration 0 0,00 0,00 21 0 md 0 0,00 0,00 0,00 7 0 Migration 0 Migration 036 0,00 0,00 21 0 md 0 0,00 0,00 0,00 7 0 Migration 036 / 0 0 0,00 0,00 0,00 15 0 netns 0 0,00 0,00 0,22 653 653 Network 0 0,00 0,00 0,00 16 0 perf 0 0,00 0,00 0,01 2071 036 pickup 0 0,00 0,00 0,05 799 799 polkitd 0 0,00 0,02 5,02 2401 327 0 0,00 0,00 0,00 2072 036 powershell qmgr 0 0,00 0,00 0,00 8 0 rcu_bh 0 0,00 0,00 0,73 10 0 RCU_Sch 0 0,00 0,00 0,00 9 0 RCUOB/0 0 0,00 0,00 0,51 11 0 RCUOS/0 0 0,00 0,00 0,06 582 582 RSYSLOGD 0 0,00 0,00 0,00 267 0 SCSI 0 SCSI. _eh_0 0 0.00 0.00 0.00 271 0 scsi_eh_1 0 0.00 0.00 0.00 275 0 scsi_eh_2 0 0.00 0.00 0.00 269 0 scsi_tmf_0 0 0.00 0.00 0.00 273 0 scsi_tmf_1 0 0.00 0.00 0.00 277 0 scsi_tmf_2 0 0,00 0,00 0,03 1174 174 sshd 0 0,00 0,00 0,79 2322 322 sshd 0 0,00 0,00 1,68 1 1 systemd 0 0,00 0,00 0,24 453 453 systemd-journal 0 0,00 0,00 0,04 579 579 systemd-logind 0 0,00 0,00 0,19 481 481 systemd-udevd 0 0,00 0,00 0,54 1175 175 0 abgestimmt 0,00 0,00 0,02 12 0 watchdog / 0 0 0,00 0,00 0,01 798 798 WPA_Supplicant 0 0,00 0,00 0,00 17 0 Schreibback 0 0,00 0,00 0,00 378 0 xfs_mru_cache 0 0,00 0,00 0,00 379 0 XFS-BUF/DM-1 0 0,00 0,00 0,00 539 0 XFS-BUF/SDA1 0 0,00 0,00 0,00 3829292 xfs-buf/ 0 xfs-cil/dm-1 0 0,00 0,00 0,00 542 0 xfs-cil/sda1 0 0,00 0,00 0,00 381 0 xfs-conv/dm-1 0 0,00 0,00 0,00 541 0 xfs-conv/sda1 0 0,00 0,0 3 0,0 -data/dm-1 0 0,00 0,00 0,00 540 0 xfs-data/sda1 0 0,00 0,00 0,51 383 0 xfsaild/dm-1 0 0,00 0,00 0,00 543 0 xfsaild/sda1 0 0,00 0,00 0,00Der obige Befehl zeigt die gesamte Liste der laufenden Prozesse in Ihrem Linux-System an.
Um einen bestimmten laufenden Prozess anzuzeigen, verwenden Sie '-Name' Option mit dem obigen Befehl.
Um beispielsweise den Powershell-Prozess anzuzeigen, führen Sie Folgendes aus:
Get-Process -Name pwshBeispielausgabe:
NPM(K) PM(M) WS(M) CPU(s) ID SI ProcessName ------ ----- ----- ------ -- -- -- --------- 0 0,00 99,32 3,28 2575 398 pwshBefehlsaliase anzeigen
Sind Sie zu faul, einen ganzen Befehl einzugeben? Geben Sie einfach ein paar Wörter ein und drücken Sie die Tabulatortaste, der Befehl wird automatisch vervollständigt oder die Liste der vorgeschlagenen Befehle wird angezeigt, genau wie in der Linux BASH-Shell.
Alternativ gibt es Aliase für einige Befehle.
Um beispielsweise den Bildschirm zu löschen, würden Sie Folgendes eingeben: Clear-Host .
Oder Sie können einfach den Alias des obigen Befehls „cls“ oder „clear“ eingeben, um den Bildschirm zu löschen.
Um die Liste der verfügbaren Aliase anzuzeigen, führen Sie Folgendes aus:
Get-AliasHier ist die vollständige Liste der verfügbaren Aliase:
Befehlstyp Name Version Quelle ----------- ---- ------- ------ Alias ? -> Where-Object Alias % -> ForEach-Object Alias cd -> Set-Location Alias chdir -> Set-Location Alias clc -> Clear-Content Alias clear -> Clear-Host Alias clhy -> Clear-History Alias cli -> Clear-Item Alias clp -> Clear-ItemProperty Alias cls -> Clear-Host Alias clv -> Clear-Variable Alias cnsn -> Connect-PSSession Alias copy -> Copy-Item Alias cpi -> Copy-Item Alias cvpa -> Convert-Path Alias dbp -> Disable-PSBreakpoint Alias del -> Remove-Item Alias dir -> Get-ChildItem Alias dnsn -> Disconnect-PSSession Alias ebp -> Enable-PSBreakpoint Alias echo -> Write-Output Alias epal -> Export -Alias Alias epcsv -> Export-Csv Alias erase -> Remove-Item Alias etsn -> Enter-PSSession Alias exsn -> Exit-PSSession Alias fc -> Format-Custom Alias fhx -> Format-Hex 3.1.0.0 Microsoft.PowerShell .Utility Alias fl -> Format-List Alias foreach -> ForEach-Object Alias ft -> Format-Table Alias fw -> Format-Wide Alias gal -> Get-Alias Alias gbp -> Get-PSBreakpoint Alias gc -> Get- Inhaltsalias gci -> Get-Chil dItem Alias gcm -> Get-Command Alias gcs -> Get-PSCallStack Alias gdr -> Get-PSDrive Alias ghy -> Get-History Alias gi -> Get-Item Alias gin -> Get-ComputerInfo 3.1.0.0 Microsoft.PowerShell. Management Alias gjb -> Get-Job Alias gl -> Get-Location Alias gm -> Get-Member Alias gmo -> Get-Module Alias gp -> Get-ItemProperty Alias gps -> Get-Process Alias gpv -> Get-ItemPropertyValue Alias-Gruppe -> Group-Object-Alias gsn -> Get-PSSession Alias gsv -> Get-Service Alias gu -> Get-Unique Alias gv -> Get-Variable Alias h -> Get-History Alias history -> Get-History Alias icm -> Invoke-Command Alias iex -> Invoke-Expression Alias ihy -> Invoke-History Alias ii -> Invoke-Item Alias ipal -> Import-Alias Alias ipcsv -> Import-Csv Alias ipmo -> Import-Module Alias kill -> Stop-Process Alias md -> mkdir Alias measure -> Measure-Object Alias mi -> Move-Item Alias move -> Move-Item Alias mp -> Move-ItemProperty Alias nal -> New-Alias Alias ndr -> New -PSDrive Alias ni -> New-Item Alias nmo -> New-Module Alias nsn -> New-PSSession Alias nv -> New-Variable Alias oh -> Out-Host Alias popd -> Pop-Location Alias pushd -> Push-Location Alias pwd -> Get-Location Alias r -> Invoke-History Alias rbp -> Remove-PSBreakpoint Alias rcjb -> Receive-Job Alias rcsn -> Receive-PSSession Alias rd -> Remove-Item Alias rdr -> Remove-PSDrive Alias ren -> Rename-Item Alias ri -> Remove-Item Alias rjb -> Remove-Job Alias rmo -> Remove-Module Alias rni -> Rename-Item Alias rnp -> Rename-ItemProperty Alias rp -> Remove-ItemProperty Alias rsn -> Remove-PSSession Alias rv -> Remove-Variable Alias rvpa -> Resolve-Path Alias sajb -> Start-Job Alias sal -> Set-Alias Alias saps -> Start-Process Alias sasv -> Start-Service Alias sbp -> Set-PSBreakpoint Alias sc -> Set-Content Alias select -> Select-Object Alias set -> Set-Variable Alias si -> Set-Item Alias sl -> Set-Location Alias sls -> Select-String Alias sp -> Set-ItemProperty Alias spjb -> Stop-Job Alias spps -> Stop -Process Alias spsv -> Stop-Service Alias sv -> Set-Variable Alias type -> Get-Content Alias where -> Where-Object Alias wjb -> Wait-JobUm den Alias für einen bestimmten Befehl anzuzeigen, geben Sie Folgendes ein:
Get-Alias clsBeispielausgabe:
CommandType Name Version Source ----------- ---- ------- ------ Alias cls -> Clear-HostVollständige Liste der verfügbaren Befehle anzeigen
Um die Liste aller verfügbaren PowerShell-Befehle anzuzeigen, führen Sie Folgendes aus:
Get-CommandAnzeigen der Hilfe
Sie wissen nicht, was das Besondere tun wird? Kein Problem. Geben Sie einfach „Hilfe“ ein, um Hilfe zu erhalten. Sie müssen nicht im Internet suchen.
Sie können auch 'Get-Help' verwenden Befehl zusammen mit allen Powershell-Befehlen. Es ist so etwas wie 'Mann' Befehl unter Linux.
Um beispielsweise den Hilfeabschnitt eines Befehls namens "Clear-Host" anzuzeigen, führen Sie Folgendes aus:
Get-Help Clear-HostBeispielausgabe:
NAME Clear-Host ÜBERSICHT SYNTAX Clear-Host [] BESCHREIBUNG VERWANDTE LINKS https://go.microsoft.com/fwlink/?LinkID=225747BEMERKUNGEN Um die Beispiele anzuzeigen, geben Sie Folgendes ein:„get-help Clear-Host -Beispiele". Geben Sie für weitere Informationen Folgendes ein:„get-help Clear-Host -detailed“. Geben Sie für technische Informationen Folgendes ein:„get-help Clear-Host -full“. Geben Sie für die Online-Hilfe Folgendes ein:"get-help Clear-Host -online Wie Sie oben sehen, zeigt „Get-Help“ den Hilfeabschnitt eines bestimmten PowerShell-Befehls an, wie den Namen des Befehls, das Syntaxformat, Aliase und Bemerkungen usw.
Um die PowerShell-Konsole zu verlassen, geben Sie einfach Folgendes ein:
beendenIch hoffe, Sie haben eine grundlegende Vorstellung davon, wie die PowerShell Core Alpha-Version unter Linux (Ubuntu und CentOS) installiert wird, und die grundlegende Verwendung.
Weiterführende Literatur:
- PowerShell auf GitHub
- Erste Schritte mit PowerShell von Channel9 – Videoanleitung
- PowerShell-Community-Seite
- PowerShell-YouTube-Kanal
Verwandte Lektüre:
- Installieren Sie das Windows-Subsystem für Linux mit einem einzigen Befehl