View a markdown version of this page

Amazon S3 als PowerShell Laufwerk verwenden - AWS -Tools für PowerShell (Ausführung 5)

Version 5 (V5) von AWS -Tools für PowerShell wurde veröffentlicht!

Informationen zu wichtigen Änderungen und zur Migration Ihrer Anwendungen finden Sie im Thema Migration.

Orange button with text "Click here for details".

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Amazon S3 als PowerShell Laufwerk verwenden

Gilt für: AWS.Tools.S3 5.0.288 und höher. Der S3-Laufwerksanbieter und seine Cmdlets sind im AWS.Tools.S3 Modul enthalten, das unter Windows PowerShell 5.1 und PowerShell 7+ (Windows, Linux, macOS) läuft.

Mit dem PowerShell S3-Laufwerk können Sie Amazon S3-Speicher als Laufwerk mounten und damit genauso arbeiten, wie Sie mit einer lokalen Festplatte arbeiten. Nachdem Sie ein Laufwerk gemountet haben, präsentiert der Anbieter Buckets und Präfixe als Ordner und Objekte als Dateien. Allgemeine Navigationsbefehle funktionieren direkt in S3, einschließlichSet-Location, Get-ChildItem Get-ContentSet-Content, und. Remove-Item

Dieses Thema behandelt das Installieren, Mounten, Navigieren, Übertragen von Inhalten und Unmounten sowie die Anmeldeinformationen, die Region und das Sicherheitsverhalten für das S3-Laufwerk.

Pfadtrennzeichen unterscheiden sich je nach Plattform

Die Beispiele in diesem Thema verwenden / als Pfadtrennzeichen, das vom Laufwerk auf jeder Plattform akzeptiert wird. Unter Windows akzeptiert das Laufwerk das auch\, also S3:\amzn-s3-demo-bucket\reports und S3:/amzn-s3-demo-bucket/reports sind dort gleichwertig. Unter Linux und macOS gibt / es nur ein Trennzeichen, also verwende dieses Formular in Skripten, die auf mehr als einer Plattform laufen. Die Pfade, die das Laufwerk zurückgibtPSPath, verwenden beispielsweise das systemeigene Trennzeichen des Betriebssystems: \ unter Windows und / unter Linux und macOS.

Voraussetzungen

  • Das AWS.Tools.S3 Modul, 5.0.288 oder höher. Installiere es direkt aus der PowerShell Galerie (dadurch wird auch seine AWS.Tools.Common Abhängigkeit abgerufen):

    Install-Module -Name AWS.Tools.S3 -MinimumVersion 5.0.288

    Oder, wenn Sie die modularen Tools mit dem AWS.Tools.Installer Modul verwalten, installieren Sie es zuerst und verwenden Install-AWSToolsModule Sie dann:

    Install-Module -Name AWS.Tools.Installer # provides Install-AWSToolsModule Install-AWSToolsModule AWS.Tools.S3

    Der Drive-Provider und seine Cmdlets sind im Lieferumfang enthalten. AWS.Tools.S3 Es ist keine zusätzliche Installation erforderlich.

  • AWS Anmeldeinformationen, die auf die gleiche Weise wie für jedes S3-Cmdlet konfiguriert wurden (ein benanntes Profil, Umgebungsvariablen, eine IAM-Rolle oder SSO). Weitere Informationen finden Sie unter Fangen Sie an mit dem AWS -Tools für PowerShell.

Beim Importieren des Moduls wird ein PowerShell Anbieter mit dem Namen registriert. AWS.S3 Sie können bestätigen, dass es verfügbar ist:

Get-PSProvider AWS.S3

Mounten Sie ein Laufwerk

Wird verwendetMount-S3PSDrive, um ein Laufwerk zu erstellen. Der -Name Parameter wird in jedem Pfad zum Laufwerksnamen (-Name S3gibt Ihnen beispielsweise Pfade wieS3:/amzn-s3-demo-bucket/reports/index.txt).

# Mount an S3: drive using a named profile and Region Mount-S3PSDrive -Name S3 -ProfileName my-profile -Region us-east-1 # List buckets Get-ChildItem S3:/

Beispielausgabe:

Type LastModified Size Name ---- ------------ ---- ---- Bucket 2026-06-02 09:14:03 amzn-s3-demo-app-logs Bucket 2026-01-08 16:47:51 amzn-s3-demo-reports

Wenn Sie bereits Sitzungsstandards mit Set-AWSCredential und festgelegt habenSet-DefaultAWSRegion, können Sie ohne weitere Parameter mounten:

Set-AWSCredential -ProfileName my-profile Set-DefaultAWSRegion us-west-2 Mount-S3PSDrive -Name S3

Mount-S3PSDriveist ein dünner Wrapper über dem PowerShell eingebauten. New-PSDrive Wenn Sie möchten, können Sie das Laufwerk direkt erstellen und dabei dieselben Anmeldeinformationen und Region-Parameter übergeben:

New-PSDrive -Name S3 -PSProvider AWS.S3 -Root '' -Scope Global -ProfileName my-profile -Region us-east-1
Direkt verwenden New-PSDrive

Pass auf-Scope Global, wenn du es New-PSDrive direkt verwendest. Ohne sie wird das Laufwerk im aktuellen Gültigkeitsbereich erstellt und verschwindet, wenn dieser Bereich beendet wird (z. B. wenn das Skript oder die Funktion, mit der es erstellt wurde, zurückkehrt). Mount-S3PSDrivesetzt -Scope Global für Sie ein.

In der Standardeinstellung wird keine Ausgabe Mount-S3PSDrive erzeugt. Fügen Sie hinzu-PassThru, wenn Sie das PSDriveInfo Objekt zurückhaben möchten.

Name des Parameters für Anmeldeinformationen

Der Anmeldeinformationsparameter ist benannt-AWSCredential, nicht. -Credential New-PSDriveist bereits -Credential als a definiertPSCredential, was ein anderer Typ ist, sodass das S3-Laufwerk einen eindeutigen Namen verwendet, um eine Kollision zu vermeiden.

Wie werden Anmeldeinformationen und Region aufgelöst

Ein S3-Laufwerk authentifiziert und wählt eine Region genau so aus, wie es die S3-Cmdlets tun: zuerst explizite Parameter, dann die von den SDK-Standardketten festgelegten Sitzungsstandards Set-AWSCredential und dann die Profil-Set-DefaultAWSRegion, Umgebungs- und Instanzmetadatenquellen der SDK-Standardketten. Die vollständige Auflösungsreihenfolge finden Sie unter und. AWS Anmeldeinformationen verwenden Geben Sie die AWS Region für AWS -Tools für PowerShell

Wenn nichts eine Region versorgt, fällt das Laufwerk zurückus-east-1. Die Region, mit der Sie mounten, ist nur die Startregion: Ein einzelnes Laufwerk kann Buckets in verschiedenen Regionen erreichen (sieheGreifen Sie von einem Laufwerk aus auf regionsübergreifende Buckets zu).

Ein schlechtes Profil oder ein fehlender Bucket oder ein fehlendes Präfix schlägt bei Mount-S3PSDrive fehl. Einige Berechtigungsfehler treten möglicherweise erst auf, wenn Sie auf ein Objekt zugreifen.

Navigieren Sie in Amazon S3 wie auf einem lokalen Laufwerk

Nachdem Sie das Laufwerk gemountet haben, navigieren Sie mit den gängigen PowerShell Laufwerksbefehlen. S3 hat keine echten Ordner, aber der Anbieter präsentiert Präfixe als Ordner, sodass Sie auf die gleiche Weise darin navigieren können.

# Change into a bucket, then a prefix Set-Location S3:/amzn-s3-demo-reports/2026 # List the current location Get-ChildItem

Beispielausgabe:

Type LastModified Size Name ---- ------------ ---- ---- Folder q1 Folder q2 Object 2026-03-31 18:02:11 48210 summary.txt
# List a path without changing location Get-ChildItem S3:/amzn-s3-demo-bucket/reports/2026

Die Tabulatorvervollständigung funktioniert für Buckets, Präfixe und Objekte, sodass Sie einen Pfad vervollständigen können, ohne vollständige Namen eingeben zu müssen.

Get-ChildItemgibt jedes Element als Objekt zurück, das die Eigenschaften, Name TypeSize, und verfügbar macht. LastModified Diese Eigenschaften ermöglichen die direkte Weiterleitung von Auflistungen in Befehle wie Where-Object undSort-Object. Typeist eines von BucketFolder, oderObject. Ordner und Eimer haben keine Größe.

# List the 10 largest objects with the prefix "2026" Get-ChildItem S3:/amzn-s3-demo-app-logs/2026 -Recurse | Where-Object Type -eq 'Object' | Sort-Object Size -Descending | Select-Object -First 10 Name, Size, LastModified

Andere Navigationsbefehle funktionieren auch auf dem Laufwerk:

# Retrieve the single item at an exact path (no children) Get-Item S3:/amzn-s3-demo-bucket/reports/index.txt # Test whether a path exists and whether it is a folder or an object Test-Path S3:/amzn-s3-demo-bucket/reports # -> True Test-Path S3:/amzn-s3-demo-bucket/reports -PathType Container # -> True (a prefix) Test-Path S3:/amzn-s3-demo-bucket/reports/index.txt -PathType Leaf # -> True (an object)
Befehlsaliase unterscheiden sich je nach Betriebssystem

Das ist PowerShell Verhalten, nicht das Laufwerk. Unter Windows funktionieren die Unix-style Aliase ls und die cat Zuordnung zu den PowerShell Cmdlets. rm ls S3:/amzn-s3-demo-bucket Unter Linux und macOS PowerShell bleiben diese Namen an die nativen Tools (/bin/ls,,/bin/cat) gebunden/bin/rm, die keinen S3-Pfad erkennen. Infolgedessen ls S3:/amzn-s3-demo-bucket läuft das System ls und schlägt fehl. Verwenden Sie für Skripts, die auf jeder Plattform ausgeführt werden, die vollständigen Cmdlet-Namen: Get-ChildItemRemove-Item, und. Get-Content (cdund dir haben auf allen Plattformen Aliasnamen, sodass diese überall funktionieren.)

Mit -Recurse Name ist der Schlüssel eines Elements relativ zum Präfix (sodass es Folgendes enthalten kann/), und derselbe Blattname kann unter verschiedenen Präfixen erscheinen. Wenn Sie ein aufgelistetes Objekt eindeutig identifizieren müssen (z. B. um es weiterzuleiten), verwenden Sie es anstelle von. PSPath Name

Aufgelistete Objekte unter Windows 5.1 über eine Pipeline mit dem Zusatz „-“ weiterleiten AsByteStream PowerShell

Das Einleiten der Get-ChildItem Pipeline Get-Content -AsByteStream kann unter Windows PowerShell 5.1 fehlschlagen. Die Engine bindet möglicherweise, -AsByteStream bevor sie weiß, dass es sich bei der über die Pipeline weitergeleiteten Eingabe um einen S3-Pfad handelt, und der FileSystem Anbieter in 5.1 hat keinen solchen Parameter (sieheDas Lesen der lokalen Dateibytes unterscheidet sich je nach Edition). Lesen Sie PSPath stattdessen jedes Element anhand seines expliziten Inhalts, was in beiden Editionen funktioniert:

# Read each listed object by explicit PSPath Get-ChildItem S3:/amzn-s3-demo-bucket/prefix | ForEach-Object { Get-Content -LiteralPath $_.PSPath -AsByteStream -Raw }

Auf PowerShell 7+ funktioniert die direkte Pipe, aber das Formular pro Element ist eine sichere Standardeinstellung für Skripte, die auf beiden Editionen ausgeführt werden.

Angebote können gefahrlos unterbrochen werden

Angebote werden gestreamt, sobald jede Seite mit Ergebnissen von S3 eintrifft. Sie können gefahrlos mit Strg+C unterbrochen werden. Ein Präfix mit einer großen Anzahl von Objekten beginnt sofort mit der Ausgabe, anstatt darauf zu warten, dass die vollständige Auflistung abgeschlossen ist.

Platzhalterzeichen in Schlüsseln

S3-Schlüssel können legal PowerShell Platzhalterzeichen ([,, ]*,?) enthalten. Um einen solchen Schlüssel wortwörtlich zu adressierenGet-Item, verwenden Sie -LiteralPath (unterstützt von Get-ContentSet-Content,, undRemove-Item), genauso wie Sie es beim Dateisystemanbieter tun:

Get-Content -LiteralPath 'S3:/amzn-s3-demo-bucket/data[2026].csv' -Raw
Test-Path und Objekte, die Sie nicht lesen können

Test-Pathgibt $true für einen Pfad zurück, den Sie nicht lesen können. Es bestätigt, dass der Pfad aufgelöst wird; es bestätigt nicht, dass Sie die Erlaubnis haben, ihn zu lesen oder zu schreiben.

Objekte aus S3 lesen

Get-Contentlädt ein Objekt herunter. Standardmäßig gibt es Text Zeile für Zeile zurück. Hinzufügen-Raw, um das gesamte Objekt als einzelne Zeichenfolge zurückzugeben. Get-ContentSowohl als auch Set-Content Unterstützung -Encoding für Text und -AsByteStream für binären Inhalt.

# Read an object line by line Get-Content S3:/amzn-s3-demo-reports/2026/summary.txt # Read the whole object as one string Get-Content S3:/amzn-s3-demo-reports/2026/summary.txt -Raw

Verwenden Sie für Objekte, die keinen Text sind, -AsByteStream um die Rohbytes abzurufen. Auf einem S3-Pfad funktioniert dies sowohl unter PowerShell 7+ als auch unter Windows PowerShell 5.1, da der S3-Anbieter den Parameter bereitstellt. Nur lokale Dateien unterscheiden sich je nach Edition (sieheDas Lesen der lokalen Dateibytes unterscheidet sich je nach Edition). Um die Textdekodierung zu steuern, fügen Sie -Encoding einen der PowerShell Standardkodierungsnamen hinzu (UTF8UTF8BOMUnicode,ASCII,, usw.). Die Standardeinstellung ist UTF-8 ohne BOM, sowohl Get-Content für als auch. Set-Content

# Read raw bytes Get-Content S3:/amzn-s3-demo-bucket/images/logo.png -AsByteStream -Raw # Decode as a specific text encoding Get-Content S3:/amzn-s3-demo-bucket/data/report.csv -Encoding UTF8

Get-Contentakzeptiert auch-PartSize, die Größe des mehrteiligen Download-Teils in Byte zwischen dem S3-Mindestwert von 5 MiB und dem Maximum von 5 GiB festzulegen. Es wird gespiegelt -PartSizeSet-Content, wodurch die Größe der Upload-Komponente festgelegt wird (sieheLaden Sie sehr große Objekte hoch).

Einlesen von Rohbytes in eine Variable

Wenn Sie die Bytes eines Objekts in eine Variable laden (um sie zu hashen, zu messen oder an eine andere API zu übergeben), glätten Sie zuerst das -AsByteStream Ergebnis. Andernfalls .Length führen Byte-Vergleiche zu falschen Ergebnissen:

$bytes = [byte[]]((Get-Content S3:/amzn-s3-demo-bucket/images/logo.png -AsByteStream -Raw) | ForEach-Object { $_ })

Bei der Weiterleitung an eine Datei oder einen anderen Befehl (z. Set-Content -AsByteStream B. wie inKopieren Sie Objekte zwischen S3 und der lokalen Festplatte) ist keine Abflachung erforderlich.

Schreiben Sie Objekte in S3

Set-Contentlädt ein Objekt hoch (und überschreibt) es.

# Write text Set-Content S3:/amzn-s3-demo-reports/2026/notes.txt -Value 'Draft complete' # Write several lines Set-Content S3:/amzn-s3-demo-bucket/notes/list.txt -Value @('alpha', 'beta', 'gamma') # Write raw bytes Set-Content S3:/amzn-s3-demo-bucket/images/logo.png -AsByteStream -Value $bytes

Uploads haben die folgenden Optionen:

Parameter Zweck

-Encoding

Textkodierung für die On-Wire-Bytes (Standard UTF-8, keine BOM).

-NoNewline

Lassen Sie den abschließenden Zeilenumbruch nach jedem Textwert weg.

-StorageClass

Speicherklasse für dieses Objekt (z. B.STANDARD_IA). GLACIER

-PartSize

Größe der mehrteiligen Komponente für diesen Upload in Byte (zwischen dem S3-Mindestwert von 5 MiB und dem Höchstwert von 5 GiB). Siehe Laden Sie sehr große Objekte hoch.

Sie können einen Upload jederzeit mit Strg+C abbrechen. Bis der Upload abgeschlossen ist, wird nichts festgeschrieben. Beim Abbrechen bleibt also kein halb geschriebenes Objekt an der Stelle des alten.

Text-Uploads verwenden LF-Zeilenenden

Text-Uploads verwenden LF-Zeilenenden, sodass ein unter Windows, Linux oder macOS geschriebenes Objekt byteidentisch ist. Wenn Sie die genaue Kontrolle über die Bytes benötigen, verwenden Sie. -AsByteStream

Laden Sie sehr große Objekte hoch

Jeder Upload über das Laufwerk ist ein mehrteiliger Upload, und S3 begrenzt einen mehrteiligen Upload auf 10.000 Teile. Bei einer Standard-Bauteilgröße von 5 MiB, die ein einzelnes Objekt auf etwa 48 GiB begrenzt, und bei einem Upload, der die Obergrenze überschreitet, gehen die Teile aus und der Vorgang schlägt fehl. Um etwas Größeres hochzuladen, erhöhen Sie den Wert -PartSize so, dass es mindestensobject size / 10,000:

# Upload a ~200 GiB object with 64 MiB parts (200 GiB / 10,000 = 21 MiB, so 64 MiB is plenty) # PowerShell 7+ Get-Content ./huge.bin -AsByteStream -ReadCount 8MB | Set-Content S3:/amzn-s3-demo-bucket/archive/huge.bin -AsByteStream -PartSize 64MB # Windows PowerShell 5.1 (local read uses -Encoding Byte; the S3 write keeps -AsByteStream -PartSize) Get-Content ./huge.bin -Encoding Byte -ReadCount 8MB | Set-Content S3:/amzn-s3-demo-bucket/archive/huge.bin -AsByteStream -PartSize 64MB

-PartSizeund -StorageClass sind S3-Zielparameter. Verwenden Sie sie mit einem expliziten S3-Zielpfad (wie im vorherigen Beispiel), nicht mit einem Pipeline-gebundenen Zielobjekt.

-PartSizeakzeptiert einen Wert zwischen dem S3-Minimum von 5 MiB und dem Maximum von 5 GiB. Bei einem Maximum von 5 GiB decken 10.000 Teile das größte Objekt ab, das S3 unterstützt (5 TiB).

Auswahl einer Bauteilgröße

Eine größere Bauteilgröße bedeutet auch, dass bei einem großen Upload weniger Hin- und Rückläufe erforderlich sind. Allerdings wird jedes Teil während des Fluges im Speicher gespeichert, sodass sehr große Teile mehr Speicher beanspruchen. 5 MiB bis ein paar hundert MiB sind ein vernünftiger Bereich. Gehen Sie nur höher, wenn die Objektgröße dies erfordert.

Kopieren Sie Objekte zwischen S3 und der lokalen Festplatte

Das Kopieren innerhalb von S3 mit Copy-Item wird nicht unterstützt (sieheUnterstützte und nicht unterstützte Operationen). Um Daten zwischen Ihrer lokalen Festplatte und S3 zu verschieben, leiten Sie den Inhalt über Get-Content und weiterSet-Content.

Lesen und schreiben Sie bei Binärdaten die Bytes exakt. Ein S3-Pfad wird in beiden PowerShell Editionen verwendet-AsByteStream; nur die lokale Seite unterscheidet sich, wie unter beschriebenDas Lesen der lokalen Dateibytes unterscheidet sich je nach Edition.

# Upload a local file (PowerShell 7+; on Windows PowerShell 5.1 the local read uses -Encoding Byte) Get-Content ./report.csv -AsByteStream -ReadCount 8MB | Set-Content S3:/amzn-s3-demo-bucket/data/report.csv -AsByteStream # Download to a local file (on Windows PowerShell 5.1 the local write uses -Encoding Byte) Get-Content S3:/amzn-s3-demo-bucket/data/report.csv -AsByteStream | Set-Content ./report.csv -AsByteStream
Verwenden Sie den Byte-Modus an beiden Enden für Binärdaten

Lesen und schreiben Sie beim Kopieren von Binärdaten Bytes an beiden Enden. Im Textmodus wird der Inhalt dekodiert und erneut codiert. Für jede Zeile wird ein Zeilenumbruch normalisiert oder angehängt, wodurch Daten, die keine Textdaten sind, beschädigt werden. Byte-mode Beim Lesen und Schreiben werden die Bytes exakt kopiert. Bei Textdateien Get-Content | Set-Content funktioniert plain, mit einer Ausnahme: Der Textmodus Set-Content fügt einen abschließenden Zeilenumbruch (LF) an und normalisiert die Zeilenenden, sodass die Kopie nicht Byte für Byte mit der Quelle identisch ist. Wenn Sie eine exakte Kopie benötigen, verwenden Sie sie an beiden Enden. -AsByteStream

Das Lesen der lokalen Dateibytes unterscheidet sich je nach Edition

Für das Targeting auf eine lokale Datei wird PowerShell der integrierte FileSystem Provider verwendet, und dieser Anbieter hat -AsByteStream in Windows PowerShell 5.1 keinen (er wurde in PowerShell 6 eingeführt). Verwenden Sie stattdessen -Encoding Byte dort. Dies ist eine 5.1-Beschränkung, die nicht vom S3-Laufwerk gesteuert wird; ein S3-Pfad gilt -AsByteStream für beide Editionen.

Edition Liest lokale Dateibytes Lokale Dateibytes schreiben

PowerShell 7+

Get-Content $f -AsByteStream -ReadCount 8MB

Set-Content $f -AsByteStream

Windows 5.1 PowerShell

Get-Content $f -Encoding Byte -ReadCount 8MB

Set-Content $f -Encoding Byte

Verwenden Sie für serverseitige S3-to-S3 Kopien das Copy-S3Object Cmdlet.

Löschen Sie Objekte und Präfixe

Remove-Itemlöscht ein einzelnes Objekt. Das Löschen eines Präfixes (eines Ordners mit Inhalten) erfordert-Recurse, dass alles, was sich darunter befindet, stapelweise entfernt wird.

# Delete a single object Remove-Item S3:/amzn-s3-demo-bucket/notes/todo.txt # Delete a prefix and everything under it Remove-Item S3:/amzn-s3-demo-bucket/old-logs -Recurse

Ob Remove-Item Eingabeaufforderungen angezeigt werden, hängt davon ab, worauf Sie abzielen:

  • Ein einzelnes Objekt, ohne-Recurse: keine Aufforderung. Das Objekt wird gelöscht.

  • Ein Präfix mit-Recurse: ohne Eingabeaufforderung. Alles unter dem Präfix wird gelöscht.

  • Ein nicht leeres Präfix ohne-Recurse: PowerShell fordert zur Bestätigung auf. Dies ist das Verhalten des Dateisystemanbieters „Container hat Kinder“. Wenn Sie dies bestätigen, wird das Löschen erneut ausgeführt. Wenn Sie ablehnen, wird nichts gelöscht. Auf einem nicht interaktiven Host blockiert diese Aufforderung. Übergeben Sie -Recurse die Taste, um ohne Aufforderung fortzufahren.

Verwenden Sie die systemeigenen PowerShell Schalter, um eine Vorschau anzuzeigen oder einen Löschvorgang durchzuführen:

# Preview without deleting Remove-Item S3:/amzn-s3-demo-bucket/old-logs -Recurse -WhatIf # Ask for confirmation Remove-Item S3:/amzn-s3-demo-bucket/notes/todo.txt -Confirm
Versioning-enabled Buckets speichern nicht aktuelle Versionen

Remove-ItemFührt in einem Bucket mit aktivierter Amazon S3-Versionierung eine Standardlöschung durch. Es fügt eine Löschmarkierung hinzu und blendet die aktuelle Version aus. Unaktuelle Versionen werden jedoch nicht entfernt, da diese beibehalten werden und weiterhin Speicherkosten verursachen. Um Versionen dauerhaft zu entfernen, verwenden Sie die S3-Cmdlets (z. B. Remove-S3Object mit einer Versions-ID) oder eine Amazon S3-Lebenszyklusregel.

Remove-Item -Recurse löscht ohne Aufforderung

Remove-Item -Recurselöscht jedes Objekt unter dem Präfix ohne Aufforderung, genau wie. rm -r Bei einem Bucket ohne Versionierung ist das rekursive Löschen dauerhaft. In einem Bucket mit aktivierter Versionierung werden Löschmarkierungen hinzugefügt, wie im vorherigen Hinweis beschrieben. Verwenden Sie -WhatIf zuerst, wenn Sie sich nicht sicher sind, was entfernt werden soll.

Sie können nicht einen ganzen Bucket über das Laufwerk löschen, da die Vorgänge im Bucket-Lebenszyklus nicht in den Geltungsbereich fallen. Verwenden Sie stattdessen Remove-S3Bucket.

Ordnen Sie einem Laufwerk einen Bucket oder ein Präfix zu

Mounten mit-Root, um ein Laufwerk auf einen Bucket oder ein Präfix innerhalb eines Buckets zu beschränken. Das Stammverzeichnis des Laufwerks ist dann dieser Standort, und die Navigation ist darunter beschränkt.

# Mount rooted at a bucket: the drive root lists the bucket's top-level entries Mount-S3PSDrive -Name Data -Root amzn-s3-demo-bucket -ProfileName my-profile -Region us-east-1 Get-ChildItem Data:/ # top-level keys in amzn-s3-demo-bucket Get-Content Data:/reports/index.txt # -> amzn-s3-demo-bucket/reports/index.txt # Mount rooted at a bucket + prefix Mount-S3PSDrive -Name Reports -Root amzn-s3-demo-reports/2026 -ProfileName my-profile -Region us-east-1 Get-ChildItem Reports:/ # contents of amzn-s3-demo-reports/2026/

Das Stammverzeichnis muss bereits existieren. Ein Bucket oder Präfix, das nicht existiert, schlägt beim Mounten fehl. Da relative Pfade nicht über das Stammverzeichnis hinausgehen können (..weil sie von der Engine blockiert werden), erhalten Sie bei einem Mount mit Geltungsbereich einen fokussierten Überblick über genau die Daten eines Projekts.

Greifen Sie von einem Laufwerk aus auf regionsübergreifende Buckets zu

Ein einzelnes montiertes Laufwerk kann Buckets in verschiedenen Regionen erreichen. Wenn Sie einen Bucket zum ersten Mal berühren, sucht der Anbieter nach seiner Region und leitet nachfolgende Anrufe automatisch an den richtigen Endpunkt weiter. Sie benötigen nicht für jede Region ein eigenes Laufwerk.

# Mounted in us-east-1, but this bucket is in us-west-2 and commands work without extra configuration Mount-S3PSDrive -Name S3 -ProfileName my-profile -Region us-east-1 Get-ChildItem S3:/amzn-s3-demo-west-bucket Get-Content S3:/amzn-s3-demo-west-bucket/data/report.csv -Raw

Legen Sie eine Standardspeicherklasse fest

Legen Sie bei der Bereitstellung mit eine festplattenweite Standardspeicherklasse fest. -StorageClass Jeder Upload über dieses Laufwerk verwendet die angegebene Klasse, es sei denn, eine bestimmte Klasse Set-Content überschreibt sie durch eine eigene. -StorageClass

# Set all uploads to default to STANDARD_IA Mount-S3PSDrive -Name Archive -ProfileName my-profile -Region us-east-1 -StorageClass STANDARD_IA Set-Content Archive:/amzn-s3-demo-bucket/cold/data.txt -Value '...' # STANDARD_IA Set-Content Archive:/amzn-s3-demo-bucket/hot/data.txt -Value '...' -StorageClass STANDARD # overrides to STANDARD

Hängen Sie ein Laufwerk aus

Verwenden Sie Dismount-S3PSDrive (einen Wrapper überRemove-PSDrive), um ein Laufwerk zu entfernen. Wechseln Sie zuerst zu einem anderen Standort, da dadurch PowerShell kein Laufwerk entfernt wird, das Ihrem aktuellen Standort entspricht.

Set-Location $HOME # or C:\ on Windows Dismount-S3PSDrive -Name S3

Unterstützte und nicht unterstützte Operationen

Verwenden Sie das Laufwerk zum Durchsuchen und Verschieben von Objektinhalten. Der Bucket-Lebenszyklus und die serverseitigen Kopiervorgänge verbleiben bei den dedizierten S3-Cmdlets.

Unterstützt

  • Navigation und Auflistung:Set-Location, Get-ChildItem (einschließlich-Recurse),,, Tabulatorvervollständigung Get-Item Test-Path

  • Inhalt: Get-Content (herunterladen), Set-Content (hochladen)

  • Löschen: Remove-Item (einzelnes Objekt; Präfixe mit-Recurse)

  • Aufgelistete Elemente in und weiterleiten Get-Content Remove-Item

Nicht unterstützt

Befehl Warum/was soll man stattdessen verwenden

Copy-Item

S3-to-S3 Die Kopie wird nicht über das Laufwerk angezeigt. Wird Copy-S3Object für serverseitige Kopien verwendet. Für lokale Zu-S3-Übertragungen oder S3-to-local Übertragungen verwenden Sie die Pipeline. Get-Content | Set-Content

Move-Item, Rename-Item

S3 hat keine Umbenennung. Führen Sie mit den Cmdlets ein Kopieren und Löschen durch.

New-Item(Verzeichnis)

S3 hat keine echten Ordner. Ein Präfix erscheint, wenn Sie ein Objekt darunter schreiben.

Clear-Content, Add-Content

Objekte werden als Ganzes von geschriebenSet-Content. Es gibt kein direktes Anfügen oder Löschen.

Get-ItemProperty, Set-ItemProperty, Clear-ItemProperty

Das Laufwerk implementiert die PowerShell Eigenschaftenschnittstelle nicht, daher schlagen diese Befehle fehl und es wird anstelle der Meldung des PowerShell Laufwerks der Engine-eigene Fehler „Schnittstelle nicht unterstützt“ angezeigt. Die Elemente, die in Get-ChildItem und Get-Item zurückgegeben werden, enthalten nurName,, Type und. Size LastModified Verwenden Sie oder, um S3-Objektmetadaten zu lesen Get-S3ObjectMetadata oder festzulegen Write-S3Object.

Buckets erstellen oder löschen

Verwenden Sie New-S3Bucket/Remove-S3Bucket.

Befehle, die nicht unterstützt werden, schlagen mit einer Meldung fehl, die den Befehl benennt und auf die Alternative verweist. Beispiel: "Copy-Item wird vom S3-Laufwerk nicht unterstützt. Verwenden Sie Copy-S3Object, oder leiten Sie Get-Content die Pipeline an Set-Content.“ Die *-ItemProperty Befehle stellen eine Ausnahme dar, wie in der vorherigen Tabelle beschrieben.

Befehlsreferenz

Die vollständige Parameterliste für Mount-S3PSDrive und Dismount-S3PSDrive finden Sie in der AWS -Tools für PowerShell Cmdlet-Referenz.

Auf einem S3-Pfad fügt das Laufwerk auch dynamische Parameter hinzu Get-ContentSet-Content, die in der PowerShell Dokumentation für diese Cmdlets nicht behandelt werden:

Befehl Parameters

Get-Content

-AsByteStream, -Raw, -Encoding, -PartSize

Set-Content

-AsByteStream,-Encoding, -NoNewline-StorageClass, -PartSize (siehe) Laden Sie sehr große Objekte hoch

Fehlerbehebung

„Das Laufwerk kann nicht getrennt werden, da es gerade verwendet wird.“

Das S3-Laufwerk ist der aktuelle Standort. Wechseln Sie zu einem Speicherort auf einem anderen Laufwerk, z. B.$HOME, und führen Sie den Vorgang Dismount-S3PSDrive erneut aus.

Das Mounten schlägt fehl mit der Meldung „root wurde nicht gefunden oder ist nicht erreichbar“.

Der Bucket oder das Präfix in -Root existiert nicht. Überprüfen Sie den Namen (und die Region, falls sich der Bucket in einem Bucket befindet, den Ihre Anmeldeinformationen nicht standardmäßig verwenden). Ein Fehler bei den Anmeldeinformationen führt zu einem anderen Fehler, nicht zu dieser Meldung „Nicht erreichbar“. Ein Berechtigungsfehler im Stammverzeichnis tritt möglicherweise erst auf, wenn Sie auf ein Objekt zugreifen. Eine erfolgreiche Bereitstellung garantiert also nicht, dass Sie jeden Pfad darunter lesen können.

Das Löschen eines nicht leeren Präfixes hängt in einem Skript.

Dies passiert, wenn Sie ein nicht leeres Präfix ohne -Recurse löschen. Die PowerShell Engine gibt eine Bestätigungsaufforderung aus, da das Präfix untergeordnete Elemente hat (das Verhalten des Dateisystemanbieters, der Container hat Kinder). Ein nicht interaktiver Host kann die Aufforderung nicht beantworten, weshalb der Befehl blockiert wird.

Übergeben Sie die Taste-Recurse, um den Inhalt des Präfixes ohne Aufforderung zu löschen, oder bestätigen Sie interaktiv, um fortzufahren. (-Forcewird vom Löschpfad des Laufwerks nicht berücksichtigt, daher hat er hier keine Auswirkung.)

„Ein Objekt, das ich gerade außerhalb des Laufwerks geändert habe, zeigt immer noch die alte Liste an.“

Angebote werden kurz zwischengespeichert (etwa eine Sekunde), um die Navigation zu beschleunigen. Über das Laufwerk vorgenommene Änderungen werden sofort angezeigt. Änderungen, die von einem anderen Tool vorgenommen wurden, werden nach Ablauf des kurzen Caches angezeigt.

„Ein Schlüssel enthält einen Backslash.“

Ob das Laufwerk einen Schlüssel adressieren kann, der einen umgekehrten Schrägstrich enthält, hängt vom Betriebssystem ab, da das Laufwerk das native Pfadtrennzeichen der Plattform akzeptiert:

  • Windows — \ ist ein Pfadtrennzeichen, das Laufwerk liest es also als eins und normalisiert es auf. / Ein Schlüssel, der einen wörtlichen Backslash enthält, kann nicht über das Laufwerk adressiert werden. Verwenden Sie stattdessen die S3-Cmdlets, z. B. oder. Get-S3Object Read-S3Object

  • Linux und macOS — nur das / ist ein Pfadtrenner. Ein Backslash ist ein normales Zeichen in einem Schlüssel, daher adressiert das Laufwerk diese Schlüssel normal.