2016-05-31 5 views
0

Hier der entsprechende Auszug aus meinem Code ist:Powershell Foreach-Schleifendateinamen findet, gibt aber, dass sie nicht existieren

$CurDir = Split-Path $Script:MyInvocation.MyCommand.Path 
Get-ChildItem -Path $CurDir -Filter TestFile*.txt | foreach { 
    gpg --recipient "RecipName" --encrypt $_ } 

Dies ist jedoch, was zurückgegeben wird:

gpg: can't open `TestFileForENcryption - Copy (2).txt': No such file or direct 
gpg: TestFileForENcryption - Copy (2).txt: encryption failed: No such file or 
gpg: can't open `TestFileForENcryption - Copy (3).txt': No such file or direct 
gpg: TestFileForENcryption - Copy (3).txt: encryption failed: No such file or 
gpg: can't open `TestFileForENcryption - Copy.txt': No such file or directory 
gpg: TestFileForENcryption - Copy.txt: encryption failed: No such file or dire 
gpg: can't open `TestFileForENcryption.txt': No such file or directory 
gpg: TestFileForENcryption.txt: encryption failed: No such file or directory 

Wenn Es ist in der Lage, jede dieser Dateien zu lokalisieren, um die Namen während der GCI zu erhalten, warum heißt es, dass sie nicht existieren, wenn sie versuchen, eine Aktion an ihnen durchzuführen? Jede Hilfe wird geschätzt. Vielen Dank!

Antwort

1
$CurDir = Split-Path $Script:MyInvocation.MyCommand.Path 
Get-ChildItem -Path $CurDir -Filter TestFile*.txt | foreach { 
    gpg --recipient "RecipName" --encrypt $_.FullName } 

Ich glaube, Ihr Fehler war es einfach $_ hat, das nur den Namen der Datei gibt, in Bezug auf die FQPN (vollständig qualifizierter Pfadname) gegenüber.

Weitere Informationen darüber, wie Name/FullName unterschiedlich verwendet werden, finden Sie unter here.

1

Es ist wahrscheinlich, weil diese Dateien nicht im Arbeitsverzeichnis von gpg sind. Versuchen Sie, ihm den vollständigen Pfad der Dateien mit der FullName Eigenschaft zu geben:

Get-ChildItem -Path $CurDir -Filter TestFile*.txt | foreach { 
    gpg --recipient "RecipName" --encrypt "$($_.FullName)" } 
+0

Danke für die Antworten! Mein Problem war zweifach: Als ich dieses Snippet manuell ausprobierte, tat ich das aus dem falschen Verzeichnis, das die "Keine solche Datei oder Verzeichnis" erklärte, die ich erhielt. Es wurde nicht vom Task Scheduler ausgeführt (was ich mit der Fehlersuche anfing), da beim Importieren des Schlüssels für etwas, das unbeaufsichtigt in gnupg ausgeführt wird, der Befehl -home-directory vor --import verwendet werden muss. – max

Verwandte Themen