[Feature Request] Replace entry script az.cmd
with az.exe
on Windows
#26682
Labels
Azure CLI Team
The command of the issue is owned by Azure CLI team
Feature Candidate
feature-request
Packaging/WindowsMSI
Milestone
Is your feature request related to a problem? Please describe.
Currently on Windows, a cmd file is used as the entry point for Azure CLI:
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin\az.cmd
This causes several problems:
[Shell] Azure CLI receives corrupted arguments in PowerShell #15529. There was an attempt [Core] Add
az.ps1
entry script for PowerShell #23514 to addaz.ps1
for PowerShell, but that caused more issues and got reverted by [Core] Revert #23514: Rename entry scriptaz.ps1
toazps.ps1
#24015Pressing Ctrl+C can't terminate
az
commands immediately. Instead,Terminate batch job (Y/N)?
is shown:az.cmd
can't be invoked by runningaz
in WSL, Cygwin or Git Bash. Theaz
Bash entry script introduced by [Packaging] Add az script for Git Bash/Cygwin on Windows #13197 caused more issues: Carriage return\r
being appended to the output #13573Describe the solution you'd like
Replace entry script
az.cmd
withaz.exe
on Windows.Additional context
The current
az.cmd
implementation requires Azure CLI to bundle a Python executableC:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe
. This Python interpreter is considered not secure by some restrictions and organizations, because it allows using build-in modules such asctypes
to execute arbitrary native code, bypassing enforcements such as Windows Defender Application Control (WDAC).We investigated using PyInstaller years ago in {Package} Use pyinstaller to package CLI #16115 but that PR didn't get merged.
There is a similar feature request Ship azure-cli as binary instead as Python module #23397 focusing on packaging the whole Azure CLI as a standalone binary on all platforms including Linux, while this feature request only focuses on
az.exe
entry point on Windows and we may still have py files in the MSI package.The text was updated successfully, but these errors were encountered: