Sunday, July 17, 2022

Utility Powershell and Dos Commands: Save Output and Commands to file, Get Versions, Get Folder, Update Common Packages

 ###########################  
 # Write output and commands to text file DOS and PS  
 #########################  
 REM Check Version of spfx related packages and save to a file  
 node --version >> C:\temp\Logs\cmdPrompt.log  
 npm --version >> C:\temp\Logs\cmdPrompt.log  
 pnp --version >> C:\temp\Logs\cmdPrompt.log  
 yo --version >> C:\temp\Logs\cmdPrompt.log  
 gulp -v >> C:\temp\Logs\cmdPrompt.log  
 nvm ls >> C:\temp\Logs\cmdPrompt.log  
 choco --version >> C:\temp\Logs\cmdPrompt.log  
 type C:\temp\Logs\cmdPrompt.log   
 REM save command output to a file and command error output STDERR and STDOUT  
 choco --version 1>> C:\temp\Logs\cmdPrompt.log 2>&1   
 REM View file in cmd  
 type C:\temp\Logs\cmdPrompt.log   
 REM Save commands to append to a file  
 doskey /history >> C:\temp\Logs\cmdPrompt.Commands.log  
 REM Copy the Command Output to Windows Clipboard  
 REM ould copy the details of your network connections to the clipboard:  
 ipconfig /all | clip  
 REM opy the contents of a folder to the clipboard  
 dir | clip  
 # Powershell save commands + output  
 # ps output to a file, output to a text file with PowerShell on Windows 11 or Windows 10,   
 ipconfig | Out-File -FilePath C:\temp\Logs\cmdPrompt.log  
 #view the saved output on the screen  
 Gt-Content -Path C:\temp\Logs\cmdPrompt.log  
 # saving BOTH the commands you type AND all their output? I'm not talking about piping the output of any one to a file, like above. Instead, this is about the PowerShell Start-Transcript cmdlet. Try it out some time:  
 Start-Transcript  
 # Without any parameters, the transcript will be saved in the user’s documents folder, filename will automatically be generated and consists of the device name, random characters  
 #e.g:   
 # c:\users\name\documents\PowerShell_transcript.DEVICENAME.qp9EOTN2.20220301132612.txt  
 # Start recording  
 Start-Transcript  
 # stop recording  
 Stop-Transcript  
 # start options  
 # Append to a log file.  
 Start-Transcript -Path C:\temp\Logs\cmdPrompt.log -Append  
 #use -NoClobber prevent overwriting file  
 Start-Transcript -Path C:\temp\Logs\cmdPrompt.log -NoClobber  
 # -OutputDirectory parameter. This way we can specify the directory where we want to store the log file  
 Start-Transcript -OutputDirectory C:\Temp\Logs  
 # Result:  
 Transcript started, output file is C:\Temp\Logs\PowerShell_transcript.WIN11-LAB02.uftVAXsv.20220301045218.txt  
 # limit the header information to only a timestamp o  
 Start-Transcript -OutputDirectory C:\Temp\Logs -UseMinimalDeader  
 # E.g:  
 **********************  
 PowerShell transcript start  
 Start time: 20220301135543  
 **********************  
 # See also: https://itluke.online/2019/03/24/what-is-captured-with-powershell-transcripts/ for Verbose+Debug levels  
 # See also: https://4sysops.com/archives/powershell-transcript-record-a-session-to-a-text-file/  
 ###########################  
 # Get Versions  
 #########################  
 # PS get version of Spfx imprtant packages  
 node --version   
 npm --version   
 pnp --version   
 yo --version   
 gulp -v   
 nvm ls   
 choco --version   
 winget --version  
 # get version of Powershell  
 host  
 # or  
 $PSVersionTable  
 $PSVersionTable.PSVersion  
 # get the value of the PowerShellVersion parameter in the registry key   
 (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion  
 #Version of PowerShell on Remote Computers  
 Invoke-Command -ComputerName 192.168.1.15 -ScriptBlock {$PSVersionTable.PSVersion} -Credential $cred  
 # get version of .Net + .Net Core  
 # versions of the .NET SDK are currently installed with a terminal  
 dotnet --list-sdks  
 (dir (Get-Command dotnet).Path.Replace('dotnet.exe', 'sdk')).Name  
 # which versions of the .NET runtime   
 dotnet --list-runtimes  
 (dir (Get-Command dotnet).Path.Replace('dotnet.exe', 'shared\Microsoft.NETCore.App')).Name  
 # dotnet core installed runtimes and SDKs, as well as some other info:  
 dotnet --info  
 # .NET Framework   
 # get from https://github.com/jmalarcon/DotNetVersions/releases save to C:\Windows\System32 or PATH  
 dotnetversions -b  
 # security updates and hotfixes that are installed on a computer using PowerShell:  
 $DotNetVersions = Get-ChildItem HKLM:\SOFTWARE\WOW6432Node\Microsoft\Updates | Where-Object {$_.name -like  
  "*.NET Framework*"}  
 ForEach($Version in $DotNetVersions){  
   $Updates = Get-ChildItem $Version.PSPath  
   $Version.PSChildName  
   ForEach ($Update in $Updates){  
     $Update.PSChildName  
     }  
 }  
 # Get CLR versions  
 # displays all the versions of the CLR installed on the computer. dl Clrver.exe (CLR Version Tool)  
 clrver   
 # get version of VS Code / Visual Studio   
 code --version  
 nuget help | select -First 1  
 dotnet nuget --version  
 # change based on version to be checked  
 (Get-Item "${env:ProgramFiles(x86)}\Microsoft Visual Studio 11.0\common7\ide\devenv.exe").VersionInfo.ProductVersion  
 # get paths to GAC  
 gacutil.exe -l  
 # get version of PnP  
 # get version of Spfx  
 REM DOS Get   
 Version of spfx related packages and save to a file  
 node --version >> C:\temp\Logs\cmdPrompt.log  
 npm --version >> C:\temp\Logs\cmdPrompt.log  
 pnp --version >> C:\temp\Logs\cmdPrompt.log  
 yo --version >> C:\temp\Logs\cmdPrompt.log  
 gulp -v >> C:\temp\Logs\cmdPrompt.log  
 nvm ls >> C:\temp\Logs\cmdPrompt.log  
 choco --version >> C:\temp\Logs\cmdPrompt.log  
 type C:\temp\Logs\cmdPrompt.log   
 ###########################  
 # Get Install Folders  
 #########################  
 # get install location of powershell  
 ###########################  
 # Update ps, choco,   
 #########################  
 #update ps core  
 iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"  
 # or   
 winget install PowerShell  

Thursday, July 7, 2022

Convert Gif to MP4 via ffmpeg

The below command can be used to convert a GIF to an MP4 using the pre-requsite ffmpeg app on Windows:


1. Open notepad, create a bat file : e.g: "fmpg.bat" 

2. Add the following : replace paths as needed:

 cd [PathToFFMpeg]\FFMpeg\bin

echo fn %~n1

echo INFILE- %1

echo OUTFILE- [PathOutput]\%~n1.mp4

ffmpeg -i "%1" -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" [PathOutput]\%~n1.mp4


Usage:

fmpg "C:\MyGifs\1.gif"

Example: