J'ajoute une clé à Windows 7 x64 en utilisant PowerShell
Jusqu'à présent, j'ai essayé la commande ci-dessous en utilisant PowerShell
powershell -executionpolicy bypass -file install-sshed.ps1
J'ai eu une erreur comme celle-ci: p >
L'argument 'install-sshed.ps1' du paramètre -File n'existe pas. Fournissez le chemin d'accès à un fichier '.ps1' existant comme argument du paramètre -File
Qu'est-ce que je fais mal?
3 Réponses :
Il semble que votre session PowerShell démarre dans un dossier différent de celui de votre script PowerShell. Essayez d'ajouter le chemin d'accès complet à votre script PowerShell:
cd c:\scripts powershell -executionpolicy bypass -file install-sshed.ps1
Vous pouvez également accéder au répertoire où se trouve le fichier * .ps1
en premier:
XXX
En plus de la réponse ci-dessus, j'aimerais ajouter que vous pouvez également utiliser des chemins relatifs.
Par exemple, pour exécuter à partir du répertoire courant
powershell -execution policy unrestricted -file ".\config\test.ps1"
Ou pour exécuter à partir d'un dossier imbriqué:
powershell -execution policy unrestricted -file ".\test.ps1"
Je recommanderai également d'ajouter le paramètre suivant: -noprofile
Cela garantira qu'aucun profil utilisateur ne sera chargé, il est recommandé de le faire lors de l'exécution de scripts.
Vous pouvez trouver une lecture intéressante ici
Oui, Set-Location
était une erreur; Je l'ai remplacé par cd
qui fonctionne à la fois dans cmd.exe
et PowerShell (où il s'agit d'un alias pour Set-Location
). Notez également que install-sshed.ps1
est un chemin relatif - il est implicitement relatif au répertoire actuel (identique à . \ Install-sshed.ps1 code>). Bon point concernant
-NoProfile
.
En plus d'autres réponses.
Il se peut que vous ayez téléchargé OpenSSH-Win32_Symbols.zip
ou OpenSSH-Win64_Symbols.zip
- ce ne sont PAS des binaires obligatoires.
Vous pouvez essayer de télécharger respectivement la version OpenSSH-Win32.zip
ou OpenSSH-Win64.zip
.
Il vous a également suggéré de cd
dans C: \ Program Files \ OpenSSH
mais l'archive est dans un sous-dossier et j'ai dû l'extraire dans le dossier OpenSSH parent.
Extra: problème courant avec les autorisations décrit ici par asterikx, vous trouverez peut-être utile de réinstaller openssh en suivant ces étapes si quelque chose ne fonctionne pas correctement (en supposant que l'archive téléchargée se trouve à D:\Downlaods
):
powershell.exe -ExecutionPolicy Bypass -File 'C:\Program Files\OpenSSH\uninstall-sshd.ps1' del 'C:\Program Files\OpenSSH\' Expand-Archive D:\Downloads\OpenSSH-Win64.zip -DestinationPath 'C:\Program Files\OpenSSH' copy 'C:\Program Files\OpenSSH\OpenSSH-Win64\*' 'C:\Program Files\OpenSSH\' del 'C:\Program Files\OpenSSH\OpenSSH-Win64\' powershell.exe -ExecutionPolicy Bypass -File 'C:\Program Files\OpenSSH\install-sshd.ps1' powershell.exe -ExecutionPolicy Bypass -File 'C:\Program Files\OpenSSH\install-sshd.ps1' powershell.exe -ExecutionPolicy Bypass -File 'C:\Program Files\OpenSSH\FixHostFilePermissions.ps1' powershell.exe -ExecutionPolicy Bypass -File 'C:\Program Files\OpenSSH\FixUserFilePermissions.ps1' Set-Service sshd -StartupType Automatic Set-Service ssh-agent -StartupType Automatic
Powershell n'utilise pas le répertoire actuel par défaut si aucun chemin n'est fourni, pour référencer explicitement le dossier actuel, ajoutez le nom du fichier avec
. \
=>. \ Install -sshed.ps1
ou utilisez un chemin absolu comme suggéré par la réponse de @ engineer@LotPings: Le besoin d'un chemin explicite s'applique uniquement à
-Command
, pas à-File
; ce dernier accepte volontiers un argument de nom de fichier uniquement s'il fait référence à un fichier dans le répertoire courant.