Windows 10、11 中是否有 chmod +x 等效项,以允许使用指定的 shebang 在 Powershell/cmd 中运行脚本?

Windows 10、11 中是否有 chmod +x 等效项,以允许使用指定的 shebang 在 Powershell/cmd 中运行脚本?

我想用一些解释语言(Python、Go、Node等)编写跨平台脚本。

这在 *nix 系统 (MacOS、Linux、BSD) 中很简单,因为我只需要使用 将文件标记为可执行文件chmod +x ./myfile,系统就会使用 shebang ( #!/usr/bin/env python) 中指定的解释器执行该脚本。然后我可以使用 运行该文件,就像它是可执行文件一样./myfile

我想在 Windows 中复制这个,但是在 Powershell 运行中.\myfile尝试使用图形操作系统“选择使用哪个应用程序运行它”对话框打开该文件。

在 Windows 中是否有等效项chmod +x ./myfile && ./myfile,或者我是否必须指导人们使用完整命令(例如python ./myfile)?

答案1

我所知道的最接近的是 Get-ACL/Set-ACL

您需要的等效 NTFS 权限是“遍历文件夹/执行文件”

示例代码:

    $NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
    # Set properties
    $identity = "BUILTIN\Administrators"
    $fileSystemRights = "Traverse"
    $type = "Allow"
    # Create new rule
    $fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type
    $fileSystemAccessRule = New-Object -TypeName 
    System.Security.AccessControl.FileSystemAccessRule -ArgumentList 
    $fileSystemAccessRuleArgumentList
    # Apply new rule
    $NewAcl.SetAccessRule($fileSystemAccessRule)
    Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl

Set-ACL 文档: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-acl?view=powershell-7.2

NTFS 权限文档: https://www.dell.com/support/kbdoc/en-us/000137238/understanding-file-and-folder-permissions-in-windows

NTFS文件系统权限说明: https://docs.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.filesystemrights?view=net-6.0

相关内容