Powershell 安全使用更新格式数据?

Powershell 安全使用更新格式数据?,powershell,Powershell,在自定义PowerShell模块中,我的模块定义顶部有以下代码: Update-FormatData -AppendPath (Join-Path $psscriptroot "*.ps1xml") 这在加载所有.ps1xml文件时工作正常 但是,有时会使用导入模块MyModule-Force(实际上,这是在模块的安装脚本中)加载模块 在这种情况下,调用updateformatdata失败,出现以下错误: Update-FormatData : There were errors in loa

在自定义PowerShell模块中,我的模块定义顶部有以下代码:

Update-FormatData -AppendPath (Join-Path $psscriptroot "*.ps1xml")
这在加载所有
.ps1xml
文件时工作正常

但是,有时会使用
导入模块MyModule-Force
(实际上,这是在模块的安装脚本中)加载模块

在这种情况下,调用
updateformatdata
失败,出现以下错误:

Update-FormatData : There were errors in loading the format data file:
Microsoft.PowerShell, c:\pathto\myfile.Types.ext.ps1xml : File skipped because it was already present from "Microsoft.PowerShell".
At line:1 char:18
+ Update-FormatData <<<<  -AppendPath "c:\pathto\myfile.Types.ext.ps1xml"
    + CategoryInfo          : InvalidOperation: (:) [Update-FormatData], RuntimeException
    + FullyQualifiedErrorId : FormatXmlUpateException,Microsoft.PowerShell.Commands.UpdateFormatDataCommand
MyModule作为第一条语句定义了以下行:

Update-FormatData -AppendPath (Join-Path $psscriptroot "*.ps1xml")

当我更新我的
$profile
以始终加载此模块时,在运行安装脚本时调用了
更新路径
命令。在安装脚本中,我强制导入模块,该模块将再次启动模块,然后,
更新路径
调用

一个简单的方法是使用
-erroraction
(别名
-ea
)参数:


不会显示错误。

Christian,我知道这个参数。但我不喜欢它,因为它会隐藏所有错误,甚至是初始加载时的实际错误。我认为在这种特殊情况下,失败的概率非常低。这可能是我选择的方式。我仍然渴望找到一个实际的解决方案。@SteveB如果我记得你能完全满足你的需要,你可以尝试使用modulemanifest。现在我没有时间给你们举个例子,但快速的谷歌搜索可能会有所帮助。谢谢,我会读的这个问题是怎么被转移的?Powershell和脚本不是更适合超级用户吗?
Update-FormatData -AppendPath (Join-Path $psscriptroot "*.ps1xml")
Update-FormatData -AppendPath (Join-Path $psscriptroot "*.ps1xml") -force -ea SilentlyContinue