1

我有一个在远程服务器上执行自定义可执行文件的 powershell 脚本。如果我首先在服务器上手动执行程序,那么让脚本执行和正常运行没有问题。

这样做的原因是程序动态创建程序集并将它们保存到文件以供以后使用。如果这些文件存在,程序会尝试删除它们并重新创建,或者如果失败则使用现有文件。

我的结论是,在运行脚本时,由于某种原因,程序没有处理文件系统的权限。因为如果我在服务器上手动运行程序,则会创建动态程序集文件,并且脚本的后续执行就像文件已创建一样工作,即它读取之前创建的文件。这些文件在程序执行所在的目录中创建。

如何设置 powershell 脚本以便允许在远程服务器上创建文件?

下面是“几乎”我的脚本

$path = Split-Path -parent $MyInvocation.MyCommand.Definition
$password = ConvertTo-SecureString -String "myPass" -AsPlainText -Force
$credentials = New-Object pscredential("remoteUser", $password)
$servernamn = "myMachine"

Invoke-Command -ComputerName $servernamn -Credential $credentials -ArgumentList $path ScriptBlock { & 'D:\temp\custom.exe' }
4

2 回答 2

0

我会尝试使用Invoke-Command 类似于以下的脚本块运行您的:

`Invoke-Command` -ScriptBlock {Start-Process -FilePath D:\temp\custom.exe -runas}

此处的更改是使用start-process并告诉远程计算机以提升的权限运行进程(-RunAs 开关),-wait如果您想在脚本继续执行之前等待 exe 完成,也可以与 start-process 一起使用。

于 2013-11-12T14:07:01.600 回答
0

一段时间后我得到了这个工作,不明白为什么建议的尝试没有。

最后我得到了以下脚本

Invoke-Command -ComputerName $servernamn -Credential $credetials -Scriptblock { 
   cd "D:\temp\"
   ./custom.exe
}

我不知道为什么在我更改目录后运行程序会有所不同,但显然有。无论如何,这可行,如果有人有同样的问题,试试这个。

于 2013-11-25T11:44:59.323 回答