Аргумент ‘install-sshed.ps1’ для параметра -File не существует | powershell

#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’s

2. @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