Je veux générer un tableau HTML qui montre un fichierhash (sha1) d'un tas de fichiers dans un répertoire; Je veux que les noms de fichiers soient relatifs à mon répertoire actuel - pas absolu.Comment générer un tableau HTML de Filehashes - avec chemin relatif seulement?
Je sais comment faire tous les différents bits séparément, mais je ne peux pas comprendre comment les enchaîner.
Voici ce que j'ai jusqu'à présent:
dir|get-filehash -Algorithm sha1
Ce qui me donne ceci:
Algorithm Hash Path
--------- ---- ----
SHA1 DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 C:\temp\test\empty.txt
SHA1 88A5B867C3D110207786E66523CD1E4A484DA697 C:\temp\test\hello.txt
Maintenant, je ne veux que le hachage et le nom, donc je peux le faire:
dir|get-filehash -Algorithm sha1|select-object hash, path
Ce qui donne:
Hash Path
---- ----
DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 C:\temp\test\empty.txt
88A5B867C3D110207786E66523CD1E4A484DA697 C:\temp\test\hello.txt
sortie Je peux donc cela à un fichier HTML comme ceci:
(dir|get-filehash -Algorithm sha1|select-object hash, path)|ConvertTo-html|add-content output.htm
[ignorer le fait que cela ne fonctionne que correctement si le fichier de sortie n'existe pas pour l'instant].
<!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>
Cela me donne un tableau HTML; mais les valeurs de PATH sont absolues.
Je connais un moyen simple d'obtenir un chemin relatif à l'aide du « Resolve-Path » applet de commande:
dir | Resolve-Path -Relative
.\empty.txt
.\hello.txt
Mais je ne peux pas le faire à « ajustement » dans le reste de mon script; Je suppose que leur pourrait être une fonction. NET pour le faire d'une manière différente? Ou y a-t-il une utilisation fantaisiste des parenthèses qui me permet de presser cet appel sur une cmdlet insde de la liste 'select-object'?
J'ai essayé mais ça ne marche pas:
# NOTE: this code does not work !
PS > dir|get-filehash|select-object hash, (path|Resolve-Path -relative)