So kann ich Out-File verwenden, um eine vollständige Verzeichnisliste in eine Textdatei zu schreiben, aber mein Problem ist, dass ich nur schreiben möchte bestimmte Teile des Verzeichnisses zu der Datei, dh ich möchte nur den Verzeichnisnamen, den Dateinamen, die Länge der Datei und die letzte Schreibzeit schreiben.PowerShell: Out-File verwenden, um einen bestimmten Teil der Dir-Auflistung in eine Textdatei zu schreiben
Hier ist, was ich versucht habe:
ich die „~“ als Trennzeichen verwenden.
cls
$Path = "C:\Testpath"
$OutFile = "C:\Testpath\Output.txt"
gci -Path $Path -Recurse | % { $_.Directory + "~" + $_.Name + "~" + $_.Length + "~" + $_.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") } | Out-File $Outfile
Es scheint, die Datei und schreibt ein paar Zeilen zu erstellen, dann bekomme ich diese Fehlermeldung mehrmals, bis das Skript beendet. Die wenigen Zeilen, die geschrieben wurden, scheinen die Unterordner im übergeordneten Ordner zu sein.
Fehler:
+ : Method invocation failed because [System.IO.DirectoryInfo] doesn't contain a method named 'op_Addition'.
At C:\SomeDirectory.ps1:4 char:46
+ gci -Path $Path -Recurse | % { $_.Directory + <<<< "~" + $_.Name + "~" + $_.Length + "~" + $_.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") } | Out-File $Outfile
+ CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
Hinweis: ersetzt ich meine tatsächliche Lage mit C: \ somedirectory in den Fehler aus offensichtlichen Gründen.
, die ein wenig (er schrieb ein paar Zeilen in die Datei zu arbeiten schien, aber hart im Augenblick zu sagen, ob es alles geschrieben), aber ich habe einen neuen Fehler bekommen: 'ToString: Sie können keine Methode für einen nullwertigen Ausdruck aufrufen. ' – danglesauce19
@ chrisdoubleu13 Bevor Sie eine Variable ** verwenden, müssen Sie eine ** Nullprüfung durchführen. Nur eine gute Praxis Kumpel. Auch das ist eine separate Frage. Majkinetor hat die Frage, die Sie ursprünglich gestellt haben, gelöst. Ich glaube, wenn Ihr ursprüngliches Problem gelöst ist, können Sie das als Antwort sehr gut akzeptieren. Ich erhebe diese Antwort. Lassen Sie uns wissen, ob Sie immer noch den gleichen Fehler haben. Sie können immer eine andere Frage öffnen, wenn Sie während der Arbeit mit anderen Fehlern konfrontiert werden und nachdem Sie versucht haben, nach Antworten zu suchen. –