powershell 在Windows bash上自动创建符号链接

s4n0splo  于 2022-11-10  发布在  Shell
关注(0)|答案(1)|浏览(196)

我正在尝试制作一个脚本来执行一些目录管理。最终的脚本将在Windows上运行,最好使用python编写。在脚本的某一点上,我需要自动创建多个文件夹之间的多个符号链接。该脚本本身在没有来自bash终端(Git Bash)的管理员权限的情况下运行。Windows未处于开发人员模式。
完美的解决方案是拥有一个元组列表(链接、源),并一次性创建相应的符号链接,同时只需按一次“是”即可获得管理员权限。
我已经做了一些研究:

mklink /D link source_directory

powershell 'start cmd -v runAs -Args /k, [comma-separated-args]'

powershell 'start cmd -v runAs -Args /k, cd, $pwd, "&", [comma-separated-args]'
假设我想要在当前工作目录中创建一个指向相对目录的符号链接**。我试了两种方法:
1.当我组合以上所有要点并从Git Bash终端执行以下命令时:
powershell 'start cmd -v runAs -Args /k, cd, $pwd, "&", mklink, /D, \"link_to_utils\", \"common\utils\"'
一个新的终端打开(在同意管理员权限之后)。但这导致在C:**的**根目录中创建了一个新的符号链接。
1.当我执行此命令时:
powershell 'start cmd -v runAs -Args /k, cd, $pwd
一个新的终端打开(在同意管理员权限之后)。我现在可以运行以下命令:
mklink /D "link_to_utils" "common\utils"
如我所愿,该链接已在当前工作目录中创建。
所以我的问题是:
A)如何在bash中使用选项1?
B)为什么要在C:\中创建符号链接?
C)有没有办法通过管道将命令传送到打开的高架cmd终端(以使选项2工作)?
注意:我一直在努力寻找一种使用python和win32api(Pywin32)的解决方案。但这会导致为需要创建的每个符号链接打开一堆命令提示符。此外,几乎没有任何关于pywin32的文档。

vtwuwzda

vtwuwzda1#

使用以下选项:

powershell 'Start-Process -Verb RunAs cmd /k, " cd `"$PWD`" & mklink /D `"link_to_utils`" `"common\utils`" "'
  • 由于PowerShell解释传递的命令行的逐字内容,因此必须遵循ITS语法规则,这意味着需要"..."(双引号)字符串才能进行自动$PWD变量的扩展(字符串内插),并且该字符串中的嵌入"字符必须转义为``"(""`也可以)。

为了概念清晰,cmd.exe的直通命令行作为单个字符串参数传递。

相关问题