Estoy trabajando con Windows-10.
Acabo de trabajar bastante para obtener información de ShortSha en los detalles de un archivo compilado. Ahora me gustaría copiar esa información al portapapeles pero parece que esto no funciona, como puede ver en esta captura de pantalla:
Como puede ver, puedo seleccionar la información, pero no puedo copiarla al portapapeles, mientras que me gustaría copiar ShortSha para encontrar esa información en mi sistema de versiones Git-Extensions.
En lo que respecta a mi versión de Windows, este es el resultado del winver
comando:
Para tu información: estoy seguro de haber trabajado con una versión de Windows donde era posible copiar esa información (esa fue unaServidor de windowsversión).
Editar:
Como estoy seguro de haber hecho esto en otro entorno de Windows, me gustaría saber el nombre exacto de esa característica y un ejemplo de dicho entorno de Windows. De esa manera, podría empezar a buscar un parche.
Edit2: comentario sobre PowerShell
En Powershell, lancé el siguiente comando, que es muy prometedor:
Get-Item "C:\Directory\Application.dll").VersionInfo.ProductVersion
En caso de continuar con esta solución, necesitaría saber:
- Cómo usar ese resultado como entrada para copiar al portapapeles (
Set-Clipboard -Value Get-Item "C:\Directory\Application.dll").VersionInfo.ProductVersion
no funciona) - Cómo integrar esto en el menú contextual de Windows (haga clic derecho y ejecute el comando en ese archivo)
Edit3: comentario sobre Windows Server
Descubrí que estaba trabajando en Windows Server y usando esta función. ¿Es posible que esta característica no funcione en una versión de Windows-10? Si no es así, ¿hay algún parche disponible para que esto funcione?
Respuesta1
Su PowerShell era casi correcto, solo le faltaba un par de paréntesis:
Set-Clipboard -Value (Get-Item "C:\Directory\Application.dll").VersionInfo.ProductVersion
Para usarlo en el menú contextual, cree un .ps1
archivo de script con el siguiente contenido. El mío estaba almacenado en C:\Temp\test.ps1
.
$param1=$args[0]
Set-Clipboard -Value (Get-Item "$param1").VersionInfo.ProductVersion
Ahora copie el siguiente texto en un .reg
archivo y luego haga doble clic en él para importarlo al registro. Creará una acción de menú contextual llamada "Obtener versión DLL" y utilizará el script anterior (asegúrese de establecer la ruta correcta al script en el texto a continuación, con doble barra invertida dentro del nombre del archivo):
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Classes\dllfile]
[HKEY_CURRENT_USER\SOFTWARE\Classes\dllfile\shell]
[HKEY_CURRENT_USER\SOFTWARE\Classes\dllfile\shell\DLLVersion]
@="Get DLL version"
[HKEY_CURRENT_USER\SOFTWARE\Classes\dllfile\shell\DLLVersion\command]
@="powershell.exe -ExecutionPolicy Bypass -File \"C:\\Temp\\test.ps1\" \"%1\""
La nueva entrada del menú contextual se puede utilizar inmediatamente.
Respuesta2
No puedo ofrecer mucho, ya que su comando es casi correcto, solo se perdió por un corchete izquierdo, pero puedo decirle cómo realizar el procesamiento por lotes.
(Get-Item "C:\Directory\Application.dll").VersionInfo.ProductVersion
Lo anterior obtiene la información que desea y Set-Clipboard
acepta argumentos canalizados, por lo que puede canalizar la salida al cmdlet:
(Get-Item "C:\Directory\Application.dll").VersionInfo.ProductVersion | Set-Clipboard
También puedes usar alias para acortar el comando:
(gi "Path\to\file.dll").VersionInfo.ProductVersion | Set-Clipboard
gi
es un alias de Get-Item
.
De forma predeterminada, Set-Clipboard
borra el portapapeles actual; si desea conservar el portapapeles actual, use -Append
el interruptor.
Supongo que desea obtener las versiones de varios archivos DLL, puede utilizarlos Get-ChildItem
para enumerar todos los archivos DLL dentro del directorio:
Get-ChildItem -Path "path\to\folder" -File -Force -Recurse -Filter *.dll
Aliado:
gci "path\to\folder" -file -fo -r -filt *.dll
Para obtener las versiones de cada dll:
Get-ChildItem "path\to\folder" -file -force -recurse -filter *.dll | ForEach-Object {$_.VersionInfo.ProductVersion}
Alias de ForEach-Object
is %
Obtiene el nombre y la versión en una cadena:
Get-ChildItem "path\to\folder" -file -force -recurse -filter *.dll | ForEach-Object {"Path: $($_.FullName), Version: $($_.VersionInfo.ProductVersion)"}
Lo anterior crea una serie de cadenas como esta:
Path: C:\Windows\System32\vcruntime140.dll, Version: 14.28.29304.1
Para unir esta matriz en una cadena gigante delimitada por nuevas líneas:
(Get-ChildItem "path\to\folder" -file -force -recurse -filter *.dll | ForEach-Object {"Path: $($_.FullName), Version: $($_.VersionInfo.ProductVersion)"}) -Join "`r`n"
Finalmente, pega todo esto en el portapapeles:
((Get-ChildItem "path\to\folder" -file -force -recurse -filter *.dll | ForEach-Object {"Path: $($_.FullName), Version: $($_.VersionInfo.ProductVersion)"}) -Join "`r`n") | Set-Clipboard
Envuelva todo esto en una función:
Function Clip-DLLVersion {
param(
[string]$path,
[bool]$append = $false
)
$data = (Get-ChildItem $path -file -force -recurse -filter *.dll | ForEach-Object {"Path: $($_.FullName), Version: $($_.VersionInfo.ProductVersion)"}) -Join "`r`n"
Switch ($append)
{
$true {Set-Clipboard -Value $data -Append}
$false {Set-Clipboard -Value $data}
}
}
Uso de ejemplo:
Clip-DLLVersion -path "$Env:WINDIR\System32"
Editar
Actualizado por comentario, clip
no es un alias de Set-Clipboard
, por lo que corregí el comando con alias para que sea aplicable de forma general.
Editar 1
Se corrigieron varios errores tipográficos en el código. Lo escribí todo en un teléfono, así que no tuve la oportunidad de ejecutarlo, hubo un error tipográfico en el primer comando para obtener los nombres, y copié y pegué ese comando en los comandos posteriores, no lo noté hasta ahora. .
Respuesta3
Puedes intentar hacer un resumen de pantalla usando el botón Imprimir pantalla en tu teclado. O simplemente utilice cualquier software de terceros como Share X. Luego utilice OCR para convertir a texto.
Respuesta4
Puede obtener los detalles del archivo usando PowerShell; También funciona en Windows 10:
Por ejemplo, para obtener la información del archivo Autoruns64.exe
, ejecute:
(Get-Item "D:\tools\Autoruns64.exe").VersionInfo | format-list * | Clip
En cuanto a la adición del menú contextual, el usuariosimonsParece haber abordado esa parte.