#powershell #ssh #windows-7-x64
#powershell #ssh #windows-7-x64
Вопрос:
Я добавляю ключ в Windows 7 x64 с помощью powershell
До сих пор я пробовал следующую команду с использованием powershell
powershell -executionpolicy bypass -file install-sshed.ps1
Я получил ошибку, подобную этой:
Аргумент ‘install-sshed.ps1’ для параметра -File не существует. Укажите путь к существующему файлу ‘.ps1’ в качестве аргумента для параметра -File
Что я делаю не так?
Комментарии:
1. Powershell не использует текущий каталог по умолчанию, если путь не указан, для явной ссылки на текущую папку добавьте к имени файла
.
=>.install-sshed.ps1
или используйте абсолютный путь, как предложено в ответе @engineererer’s2. @LotPings: Необходимость в явном пути применима только к
-Command
, не-File
; последний с радостью принимает аргумент только для имени файла, если он ссылается на файл в текущем каталоге.
Ответ №1:
Похоже, что ваш сеанс PowerShell запущен в другой папке, чем ваш сценарий PowerShell. Попробуйте добавить полный путь к вашему сценарию PowerShell:
powershell -executionpolicy bypass -file "c:scriptsinstall-sshed.ps1"
В качестве альтернативы, перейдите в каталог, в котором сначала находится *.ps1
файл:
cd c:scripts
powershell -executionpolicy bypass -file install-sshed.ps1
Ответ №2:
В дополнение к приведенному выше ответу я хотел бы добавить, что вы также можете использовать относительные пути.
Например, для запуска из текущего каталога
powershell -execution policy unrestricted -file ".test.ps1"
Или для запуска из вложенной папки:
powershell -execution policy unrestricted -file ".configtest.ps1"
Я также порекомендую добавить следующий параметр: -noprofile
Это гарантирует, что профили пользователей не будут загружены, это рекомендуется делать при запуске сценариев.
Вы можете найти интересное чтение здесь
Комментарии:
1.Да,
Set-Location
это была ошибка; Я заменил его наcd
, который работает как вcmd.exe
, так и в PowerShell (где это псевдоним дляSet-Location
). Также обратите внимание, чтоinstall-sshed.ps1
это относительный путь — он неявно относится к текущему каталогу (такой же, как.install-sshed.ps1
). Повторный хороший аргумент-NoProfile
.
Ответ №3:
В дополнение к другим ответам.
Возможно, вы скачали OpenSSH-Win32_Symbols.zip
или OpenSSH-Win64_Symbols.zip
— это необязательные двоичные файлы. Вы могли бы попытаться загрузить OpenSSH-Win32.zip
или OpenSSH-Win64.zip
версию соответственно.
Также было предложено, чтобы вы cd
вошли C:Program FilesOpenSSH
во вложенную папку, но архив находится во вложенной папке, и мне пришлось извлечь его в родительскую папку OpenSSH.
Дополнительно: распространенная проблема с разрешениями, описанными здесь asterikx, может оказаться полезным переустановить openssh, выполнив эти шаги, если что-то не работает должным образом (при условии, что загруженный архив находится по адресу D:Downlaods
):
powershell.exe -ExecutionPolicy Bypass -File 'C:Program FilesOpenSSHuninstall-sshd.ps1'
del 'C:Program FilesOpenSSH'
Expand-Archive D:DownloadsOpenSSH-Win64.zip -DestinationPath 'C:Program FilesOpenSSH'
copy 'C:Program FilesOpenSSHOpenSSH-Win64*' 'C:Program FilesOpenSSH'
del 'C:Program FilesOpenSSHOpenSSH-Win64'
powershell.exe -ExecutionPolicy Bypass -File 'C:Program FilesOpenSSHinstall-sshd.ps1'
powershell.exe -ExecutionPolicy Bypass -File 'C:Program FilesOpenSSHinstall-sshd.ps1'
powershell.exe -ExecutionPolicy Bypass -File 'C:Program FilesOpenSSHFixHostFilePermissions.ps1'
powershell.exe -ExecutionPolicy Bypass -File 'C:Program FilesOpenSSHFixUserFilePermissions.ps1'
Set-Service sshd -StartupType Automatic
Set-Service ssh-agent -StartupType Automatic