Powershell忽略“只读”请求并以非只读方式打开

2023-12-31

我有一个文档设置为请求用户打开只读版本(选项“只读推荐”)。我想仅在 powershell 中打开 Excel 文档而不继续阅读(拒绝要求打开“只读”的提示)。这是我当前的代码。

$dir = "\\file_path\*"
$latest = Get-ChildItem -Path $dir | Sort-Object LastAccessTime -Descending | Select-Object -First 1
$latest.name

$excelObj = New-Object -ComObject Excel.Application
$excelObj.Visible = $True
$excelObj.DisplayAlerts = $False


$workBook = $excelObj.Workbooks.Open($latest)

如何忽略只读提示并打开完整版?


应该有一个IgnoreReadOnlyRecommended您可以在工作簿打开方法中提供的参数:

$workBook = $excelObj.Workbooks.Open($latest,,,,,,$True,,,,,,,)

工作簿.打开方法 (MSDN) https://msdn.microsoft.com/en-us/library/office/ff194819.aspx


Edit

根据下面的评论,似乎存在一个错误,当$null提供参数。谢谢这个答案 https://stackoverflow.com/a/5575966/4240221在另一个问题上,似乎有办法解决这个问题:

1、需要这个功能:

Function Invoke-NamedParameter {
    [CmdletBinding(DefaultParameterSetName = "Named")]
    param(
        [Parameter(ParameterSetName = "Named", Position = 0, Mandatory = $true)]
        [Parameter(ParameterSetName = "Positional", Position = 0, Mandatory = $true)]
        [ValidateNotNull()]
        [System.Object]$Object
        ,
        [Parameter(ParameterSetName = "Named", Position = 1, Mandatory = $true)]
        [Parameter(ParameterSetName = "Positional", Position = 1, Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [String]$Method
        ,
        [Parameter(ParameterSetName = "Named", Position = 2, Mandatory = $true)]
        [ValidateNotNull()]
        [Hashtable]$Parameter
        ,
        [Parameter(ParameterSetName = "Positional")]
        [Object[]]$Argument
    )

    end {  ## Just being explicit that this does not support pipelines
        if ($PSCmdlet.ParameterSetName -eq "Named") {
            ## Invoke method with parameter names
            ## Note: It is ok to use a hashtable here because the keys (parameter names) and values (args)
            ## will be output in the same order.  We don't need to worry about the order so long as
            ## all parameters have names
            $Object.GetType().InvokeMember($Method, [System.Reflection.BindingFlags]::InvokeMethod,
                $null,  ## Binder
                $Object,  ## Target
                ([Object[]]($Parameter.Values)),  ## Args
                $null,  ## Modifiers
                $null,  ## Culture
                ([String[]]($Parameter.Keys))  ## NamedParameters
            )
        } else {
            ## Invoke method without parameter names
            $Object.GetType().InvokeMember($Method, [System.Reflection.BindingFlags]::InvokeMethod,
                $null,  ## Binder
                $Object,  ## Target
                $Argument,  ## Args
                $null,  ## Modifiers
                $null,  ## Culture
                $null  ## NamedParameters
            )
        }
    }
}

这会建议Workbooks.Open()方法可以这样调用:

$workBook = Invoke-NamedParameter $excelObj "Workbooks.Open" @{"FileName"=$latest;"IgnoreReadOnlyRecommended"=$True}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell忽略“只读”请求并以非只读方式打开 的相关文章

  • 将子进程的输出重定向到父进程 - Powershell

    我有 powershell 进程 并且我正在调用 Start Process 或 System Diagnostic Process 以作为不同用户启动子进程 以获取其他用户环境变量 我尝试使用重定向输出 但它不起作用 下面是代码 proc
  • 为什么 CSV 文件中的多行单元格在 Excel 中每行末尾都显示有问号?

    我目前正在开发一个项目 我们希望允许用户将数据导出到 CSV 我们提供的一些数据在单个单元格中具有多个值 因此我们使用标准 CSV 方法将每个值放在自己的行上 Column A Column B Column C Value A Value
  • EPPlus / 如何从数据透视表获取数据?或者说如何轻松操作数据?

    我在处理报告中的数据上浪费了很多时间 使用数据透视表是个好主意 但是如何呢 我尝试了一些免费的PivotTable类 但缺少小计 然后 另一种方法 为了excel我正在使用的报告的输出EPPlus 它还支持数据透视表 问题是我们的一些客户没
  • 在 PowerShell 中返回具有单个元素的数组

    这应该非常简单 我需要从函数返回哈希表数组 当有多个哈希表时 这是有效的 但当只有一个哈希表时 结果不是数组 我不想测试结果是否是数组 function GetArrayWith1Hashtable array hashtable hash
  • 将 Excel 模板 (xltx) 作为 Excel 模板而不是工作簿打开

    我正在尝试编写一行代码来打开 Excel 模板 xltx 文件作为 Excel 模板文件而不是新工作簿 我只是想让用户查看和编辑他们在我们网络上的库文件夹中的模板 然而 我尝试过的所有操作都会打开一个新的工作簿而不是模板 我尝试过互操作 W
  • Powershell 将字符串转换为 System.Net.IPAddress

    我是 powershell 新手 我正在尝试自动创建 DHCP 预留 到目前为止 我可以像这样获取 IP 地址 IP GEt VM ComputerName HVCOMPUTERNAME VMName HVNAME Get VMNetwor
  • 如何从有条件的列中获取最新值

    我在 Excel 中有一个表 其中包含以下列 Date 人名 金额 英镑 该表用于记录人们何时付钱给我 通常 我可以让不止一个人在同一天向我付款 而且 随着时间的推移 同一个人会在很多天向我付款 记录添加到表格底部 以便按日期排序 但不再按
  • Copy-Item 将目录及其内容复制到 UNC 路径

    我正在尝试使用 PowerShell 1 0 获取文件夹的内容并将其复制到另一个文件夹 非常简单的东西 使用起来一切都很好Copy Item from to recurse如果我从本地文件夹复制到本地文件夹 然而 如果 to变量是一个UNC
  • Excel 单元格对齐:例如数值xlLeft、xlRight 还是 xlCenter?

    我一直在尝试对齐 Excel 单元格文本值 我尝试过更常见的xlLeft xlRight但这似乎不起作用 错误是xlLeft没有宣布 我正在使用 Visual Studios 并使用 VB 创建一个 aspx 页面 这是我的代码示例 Dim
  • 使用 powershell 获取 Azure DevOps 服务连接服务主体 ID

    我正在致力于自动化 Azure Active Directory 应用程序注册和 Azure Devops 服务连接 但遇到了困难 我想通过服务主体 ID 查询 Azure DevOps 服务连接 服务端点 或至少获取 ID 使用 Azur
  • VB.NET 中的 Excel 自动调整列

    我这里有我的 VB6 代码并且运行良好 For CLms 1 To 10 ws Columns CLms AutoFit lt Autofilt data on XL sheet Next CLms 我已经搜索了如何在 VB NET 中使
  • 使用 C# 的高级过滤器 excel

    我需要在Excel工作表中做一个过滤器 我想知道是否可以做这样的过滤器 List
  • 基于两列值的VLOOKUP

    我有一个表 其中一列包含用户 ID 这些被多次输入以显示特定主题的结果 ID Topic Pass Fail 71086686 Science P 71086686 Maths P 71086686 Tech P 71086686 ICT
  • Excel 2010 中隐藏行的宏

    我对 VBA 编程有点陌生 我在互联网上阅读了一些内容 但找不到我需要的内容或无法使其正常工作 我的问题 在工作表 表 1 的单元格 B6 中 给出了项目将被利用的年数 在工作表 sheet 2 和 sheet 3 中 我制作了 50 年的
  • Azure 自动化 Powershell Runbook 无法进行 LoadAssembly

    我是 Powershell Runbook 的新手 所以如果我遗漏了一些明显的内容 请原谅我 我正在尝试从我的脚本记录 Application Insights 请求 但甚至无法加载 DLL 尽管我已经看到其他代码执行非常类似的操作 请注意
  • Powershell:别名和函数有什么区别?

    Im setting up my powershell profile to create aliases of commonly used commands On Microsoft s documentation https learn
  • Worksheet_Change 事件未触发

    我的 Excel 项目在家中可以正常运行 带有Excel 2010 但不能在两台工作计算机上 使用Excel 2016 并且我怀疑Worksheet Change事件就是问题 当用户进行更改时 黄色条 屏幕截图中 应再次变为白色 但事实并非
  • Hyperlinks.add VBA [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在用 VBA 编程 我想使用创建超链接hyperlink addActiveSheet 对象的方法 但是它不起作用 这是我的代码 set
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • 父子进程隔离和子进程列表

    请阅读以下模板 PID Status LPID 10 Closed 25 11 Open 25 31 Open 31 25 Closed 25 54 Open 31 17 Open 17 20 Closed 31 88 closed 77

随机推荐