2
votes

L'argument 'install-sshed.ps1' du paramètre -File n'existe pas | PowerShell

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?


2 commentaires

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.


3 Réponses :


2
votes

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


0 commentaires

1
votes

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


1 commentaires

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 ). Bon point concernant -NoProfile .



0
votes

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


0 commentaires