Ich möchte eine HTML-Tabelle generieren, die einen Dateizugriff (sha1) von einer Reihe von Dateien in einem Verzeichnis zeigt; Ich möchte, dass die Dateinamen relativ zu meinem aktuellen Verzeichnis sind - nicht absolut.Wie man HTML-Tabelle von Filehashs produziert - mit nur dem relativen Pfad?
Ich weiß, wie man alle verschiedenen Bits getrennt macht, aber ich kann nicht herausfinden, wie man sie kettet.
Hier ist, was ich bisher habe:
dir|get-filehash -Algorithm sha1
Was mich ergibt dies:
Algorithm Hash Path
--------- ---- ----
SHA1 DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 C:\temp\test\empty.txt
SHA1 88A5B867C3D110207786E66523CD1E4A484DA697 C:\temp\test\hello.txt
Jetzt möchte ich nur den Hash und den Dateinamen, so kann ich dies tun:
dir|get-filehash -Algorithm sha1|select-object hash, path
Welches gibt mir:
Hash Path
---- ----
DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 C:\temp\test\empty.txt
88A5B867C3D110207786E66523CD1E4A484DA697 C:\temp\test\hello.txt
So kann ich Ausgang dieses in eine HTML-Datei wie folgt:
(dir|get-filehash -Algorithm sha1|select-object hash, path)|ConvertTo-html|add-content output.htm
[ignorieren die Tatsache, dass dies funktioniert nur dann richtig, wenn die Ausgabedatei für jetzt nicht existiert].
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML TABLE</title>
</head><body>
<table>
<colgroup><col/><col/></colgroup>
<tr><th>Hash</th><th>Path</th></tr>
<tr><td>DA39A3EE5E6B4B0D3255BFEF95601890AFD80709</td><td>C:\temp\test\empty.txt</td></tr>
<tr><td>88A5B867C3D110207786E66523CD1E4A484DA697</td><td>C:\temp\test\hello.txt</td></tr>
</table>
So gibt mir das eine HTML-Tabelle; aber die PATH-Werte sind absolut.
Ich kenne eine einfache Art und Weise einen relativen Pfad des Erhaltens der ‚Resolve-Path‘ Cmdlets:
dir | Resolve-Path -Relative
.\empty.txt
.\hello.txt
Aber ich kann sie nicht zu ‚fit‘ in den Rest meines Skript; Ich nehme an, sie könnten eine .NET-Funktion sein, um das auf andere Weise zu tun? Oder gibt es ein paar ausgefallene Ninja-Verwendung von Klammern, die mich diesen Aufruf zu einem Cmdlet in der 'Objektauswahlliste' komprimieren lassen?
Ich versuchte dies aber es funktioniert nicht:
# NOTE: this code does not work !
PS > dir|get-filehash|select-object hash, (path|Resolve-Path -relative)