Microsoft使用Powershell打开文件

问题描述

我在从Project Online(服务器)打开项目文件时遇到问题。我想将所有在线文件​​保存在本地。如果我首先通过桌面客户端打开项目,然后尝试使用FileOpenEx函数打开该文件,则它可以工作(也许是因为它打开了草稿?) 我也尝试过完整的URL

 $Project.FileOpenEx(".../pwa/_api/projectdata/Projects/$name",$true)

但是它启动了导入向导 这是代码

$csv = Import-Csv '...\ProjectNames.csv'
$Project = New-Object -ComObject msproject.application 
$csv | ForEach-Object {

$name=$_.ProjectName
Write-Output $name

    $Project.FileOpenEx("<>\$name",$true)

    $Save=$Project.FileSaveAs("...\Desktop\ProjectData\$name.mpp")

    Get-Process | where{$_.ProcessName -like "*winproj*"} | Stop-Process
}

当我尝试打开Project Online项目时收到此错误

ForEach-Object : Exception calling "FileOpenEx" with "2" argument(s): "The remote procedure call Failed. (Exception from HRESULT: 0x800706BE)"
    At ...\MigrateProjects.ps1:26 char:8
    + $csv | ForEach-Object {
    +        ~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [ForEach-Object],MethodInvocationException
        + FullyQualifiedErrorId : COMException,Microsoft.PowerShell.Commands.ForEachObjectCommand

编辑:我已经将代码更改为使用注释中指出的shell,它现在打开。但是,当我尝试保存文件时,有时它不返回布尔值,而是停止。它发生在不同的项目上,但是确实保存了我列出的所有项目一次。但是,当我要重复保存过程时,它仅在FileSaveAs处退出。而且我不知道为什么。

$csv = Import-Csv '...\ProjectData\ProjectNames.csv'

$ProjServer=".../sites/pwa/"

$ProjShell = new-object -comobject wscript.shell 
$ProjShell.Run("winproj /s $ProjServer",1,$false)

Start-Sleep -s 15
$Project =[System.Runtime.InteropServices.Marshal]::GetActiveObject("msproject.application")

Try{
$csv | ForEach-Object {
    
    $name=$_.ProjectName
    Write-Output $name
    $NameWithoutSpaces= $name -replace '\s','_'

    $Project.FileOpenEx("<>\$name",$true)
    
   $Save= $Project.FileSaveAs("...\ProjectData\$NameWithoutSpaces.mpp")
   Write-Output $Save
}
}
catch{
    Get-Process | where{$_.ProcessName -like "*winproj*"} | Stop-Process
    $error[0].Exception.GetBaseException().LoaderExceptions
    }


Get-Process | where{$_.ProcessName -like "*winproj*"} | Stop-Process

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...