powershell - 远程执行脚本的脚本位置?

标签 powershell remote-access

如何让远程执行的脚本知道它自己的位置?我正在使用 Invoke-Command 在远程服务器上运行脚本。该脚本需要在它所在的目录中创建文件。使用相对寻址运行不起作用(即 .\output.log),脚本通常最终出现在远程服务器上的我的用户配置文件中。我尝试了 this question 中概述的所有方法但当脚本远程时,它们似乎都不起作用。

更新:为每个请求提供脚本调用代码

$server='ad1hfdahp802'
$remotepath='\\ad1hfdahp802\d$\AHP\pi_exceed_presentation\pi_exceed_presentation_deploy.ps1'
$SDFEnvironment='INT'
Invoke-Command -ComputerName $server -FilePath $remotepath -ArgumentList($SDFEnvironment,$remotepath)

远程脚本采用 $remotepath 并将其转换为文件系统路径。

最佳答案

-FilePathInvoke-Command 结合使用意味着您在本地读取脚本并将内容作为脚本 block 发送到远程计算机。 $PSScriptRoot 仅当脚本直接在目标上执行时才有效。您可以尝试使用:

Invoke-Command - ComputerName "computer1" -Scriptblock { & '\\server\path\to\script.ps1' } -Authentication Credssp

请注意,您需要 CredSSP 才能完成此操作,因为如果没有它,远程计算机将无法使用您的凭据访问网络资源。作为替代方案,您可以使用 psexec (或远程启动进程)。例如。

psexec \\computer1 powershell -noprofile -file \\server\path\to\script.ps1

关于powershell - 远程执行脚本的脚本位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35417304/

相关文章:

c# - 如何使用 C# 在 PowerShell 中运行 Restart-Computer?

node.js - 如何远程运行node js

mysql - 从本地机器连接到 AWS 上的 MySQL

MySQL 远程连接问题

PowerShell:脚本 Comment_Based_Help 出现 "Get-Help Cannot find Help for topic"错误

class - 在 PowerShell 中从内存中删除类

powershell - 要求用户从存储的列表中选择选项(AD OU 路径)

php - 如何使用 PHP 从基于 EC2 的应用程序服务器连接到专用 Windows 2003 服务器上的 MySQL 数据库

python - 在远程 UNIX 机器上安装 Python

powershell - 如何为具有许多路径参数的EXE创建PS别名?