我编写了一个日志记录模块,使用 Out-File -Append 将各种行写入文件。我正在为SCCM编写一些脚本和模块。大多数SCCM功能/命令都不允许您通过参数定位特定提供商/位置。
这意味着我需要切换到' CMSite'提供程序来运行大多数命令。
我遇到的问题是,如果我切换到' CMSite'提供程序,由于某种原因它打破了我的日志记录,导致错误:
PSLogging.psm1 (144, 15): ERROR: At Line: 144 char: 15
ERROR: + $logline | Out-File -Append -Encoding utf8 -FilePath $logFullPath;
ERROR: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ERROR: + CategoryInfo : InvalidArgument: (:) [Out-File], PSInvalidOperationException
ERROR: + FullyQualifiedErrorId : ReadWriteFileNotFileSystemProvider,Microsoft.PowerShell.Commands.OutFileCommand
ERROR: Out-File : Cannot open file because the current provider (AdminUI.PS.Provider\CMSite) cannot open a file.
即使我在Out-File参数中提供完整路径。该错误显然是因为CMSite提供程序不是文件系统提供程序,但我认为提供完整路径将是上下文敏感的并自动使用正确的提供程序?
如果我这样做:
Set-Location C:
在记录任何内容之前,它可以正常工作。
我曾经想过的一件事是,记录位置实际上是一个UNC路径(我们使用全局变量控制),也许它没有正确切换提供程序,因为它不是' PSDrive来'提供商?
我是否遗漏了某些内容,或者我是否需要'设置位置' 并且每次想要对文件运行日志记录命令时都会切换PSDrives?
答案 0 :(得分:2)
是的UNC路径需要一些帮助被定义为FileSystem提供程序。试试这个:
$logline | Out-File -Append -Encoding utf8 -FilePath ('FileSystem::' + $logFullPath)