我正在运行 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,大概类似于此处描述的设置应该可以工作。总体而言,上面列出的方法可能存在两个问题:
- 该脚本是一个预期脚本,因此应该通过 C:\Cygwin\bin\expect.exe 运行,而不是 C:\Cygwin\bin\mintty.exe
- 脚本位置被解释为 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)。运行该批处理脚本。