使用powershell运行cygwin配置文件

使用powershell运行cygwin配置文件

我正在运行 Windows Server 2012 R2。我有一个 cygwin_config 文件,我在 cygwin 中运行它期望 cygwin_config命令。该文件配置了我的 ssh_config 和 sshd_config。有没有办法从我的 powershell 运行这个脚本,这样我就不需要进入 cygwin 来运行它了?我尝试了一些方法,但都没有成功,例如:

$file= Get-ChildItem  C:\Cygwin\home\Administrator\cygwin_config | Select-Object 
$cmd=Start-Process C:\Cygwin\bin\mintty.exe $file

它尝试打开 mintty.exe,但立即关闭了 mintty.exe。如果没有其他帮助,我想我需要通过 powershell 创建 ssh-host-config 所需的用户。

我还创建了一个文件期望/路径/到/cygwin_config并将其保存为 .exe 文件。双击后,出现错误弹出窗口:“Windows 无法访问指定的设备、路径或文件。您可能没有适当的权限来访问它们。”我尝试以管理员身份运行程序并更改目录中的权限,但没有任何效果。

我的cygwin_配置:

#!/bin/expect -f

spawn ssh-host-config

set timeout 20

expect {
     "Should StrictModes be used? (yes/no)" { send "no\r" }
}

set timeout 5

expect {
     "new local account 'sshd'? (yes/no)" { send "yes\r" }
}

expect {
     "Do you want to install sshd as a service?"  {send 
     "yes\r";exp_continue }
     "Enter the value of CYGWIN for the daemon:" { send " \r"; }
}

set timeout 5

expect {
     "Do you want to use a different name? (yes/no)" { send "no\r";
      exp_continue }
     "Create new privileged user account" { send "yes\r";
      exp_continue }
     "Please enter the password" { send "pwd\r";
      exp_continue }
     "Reenter:" {send "pwd\r";
      exp_continue }
}

[编辑]通过从属性中更改文件权限(授予管理员完全权限)解决了 Windows 弹出错误。但它仍然无法工作,因为应用程序无法在我的 PC 上运行:“此应用无法在您的电脑上运行”所以这个解决方案就被扔进了垃圾箱。

答案1

我不使用 Powershell,大概类似于此处描述的设置应该可以工作。总体而言,上面列出的方法可能存在两个问题:

  1. 该脚本是一个预期脚本,因此应该通过 C:\Cygwin\bin\expect.exe 运行,而不是 C:\Cygwin\bin\mintty.exe
  2. 脚本位置被解释为 Cygwin 命令的参数,因此路径应该使用 Cygwin 可以理解的符号(除非用引号引起来,否则与 Windows 符号不同)。

您可能想尝试:

C:\Cygwin\bin\expect.exe 'C:\Cygwin\home\Administrator\cygwin_config'

这些单引号很重要,这样 Cygwin 才能识别 Windows 样式的路径。或者您可以首先尝试使用 Cygwin 路径符号:

C:\Cygwin\bin\expect.exe /home/Administrator/cygwin_config'

这是一个不同的例子。创建一个名为 run_myscript.bat 的文件,内容如下:

C:\Cygwin\bin\sh 'C:\Cygwin\home\Administrator\myscript.sh'

在指定位置创建脚本 myscript.sh,内容如下:

date
sleep 10

确保您的批处理脚本是可执行的 (chmod 775 run_myscript.bat)。运行该批处理脚本。

相关内容