远程执行Powershell脚本-MSAccess无法启动

时间:2019-06-03 18:19:21

标签: c# powershell ms-access

我正在尝试远程执行Powershell脚本,该脚本将通过MSAccess启动accdb文件。我能够使Powershell脚本成功执行,但是MSAccess无法启动,因为我知道我所拥有的test.accdb文件没有得到更新。为了能够启动MSAccess,我的代码中缺少什么?还是不可能?

我的代码在IIS的Windows 2012 R2环境中运行,并由对计算机具有管理特权的服务帐户执行。如果我运行以该服务帐户登录的代码,则可以正常工作而不会出现问题。如果我远程执行,则仅执行部分代码

我的.NET应用程序代码如下(在服务帐户下运行)。我已经更改了一些私人信息,但不会影响代码。

    internal static HttpStatusCode ExecuteRemoteCommand()
    {
        WSManConnectionInfo connectioninfo = new WSManConnectionInfo();
        connectioninfo.ComputerName = "testcomputer";
        using (Runspace runspace = RunspaceFactory.CreateRunspace(connectioninfo))
        {
            runspace.Open();
            using (PowerShell ps = PowerShell.Create())
            {
                ps.Runspace = runspace;
                var re = ps.AddScript(@"\\testcomputer\test\StartTest.ps1");
                var results = re.Invoke();
            }
        }

        return HttpStatusCode.Created;
    }

我的Powershell代码如下:

try {

    $msAccess = "C:\Program Files (x86)\Microsoft Office\Office14\msaccess.exe"
    $fileLocation =  "C:\test\DBT.accdb"
    Start-Process -FilePath $msAccess -ArgumentList $fileLocation -Verb RunAs -WindowStyle Hidden -WorkingDirectory "C:\test" 
    $today = Get-Date
    "SUCCESS: " + $today > "c:\test\TestExecutionSuccess.txt"

}
Catch
{
    $_.Exception.Message > "c:\test\TestExecutionError.txt"
}

在两种情况下(在本地运行脚本的地方和在远程执行脚本的地方),创建 TestExecutionSuccess.txt文件。

但是,只有在本地测试运行中才更新DBT.accdb文件。

2 个答案:

答案 0 :(得分:0)

所以让我们谈谈问题

1:您可以在登录的用户帐户下运行代码,然后运行代码并打开Excel。

2:您可以在登录的服务帐户下运行代码,然后运行代码并打开Excel。

3:您可以输入代码,但是如果您未登录用户,则Excel不会加载。

为什么?

这是关于交互式标志的。登录用户后,便可以使用COM加载GUI。如果您尚未登录用户,则无法加载GUI。

这是来自 Microsoft Interactive User

答案 1 :(得分:0)

在ArcSet的指导下,我认为我能够找出问题所在。他的回答使我无法研究运行哪个版本的Powershell。原来C#代码正在运行Powershell x64而不是x86(32位)版本。 Office安装是32位的,因此为什么我不能运行MSAccess。

我不知道如何从C#代码运行x86版本的Powershell,但是我所做的是将MSAccess的启动放入批处理文件中,然后从我的powershell代码执行了批处理文件。不是超级干净,但它起作用。访问现在可以正常运行。

这是批处理文件代码:

Freezable does not exist in the namesape

和PowerShell脚本的新版本:

cd "C:\Program Files (x86)\Microsoft Office\Office14"
MSACCESS.EXE C:\test\DBT.accdb