Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell中的异常日志记录_Powershell - Fatal编程技术网

PowerShell中的异常日志记录

PowerShell中的异常日志记录,powershell,Powershell,我当前在PowerShell脚本中记录异常时遇到问题。我正在尝试将文件复制到C:\Windows\System32,如果日志文件出错,我想在日志文件中添加一行错误。到目前为止,我已经尝试了两种方法 例1: 例2: 我可以将项目添加到日志文件中,这样我就知道该文件没有权限问题。我遗漏了什么?我相信您收到的错误是不可终止的。这就是为什么它不会在一个捕捉块中结束 尝试此操作,而不是复制项目行: Copy-Item $scriptPath\Devcon.exe C:\Windows\System32 -

我当前在PowerShell脚本中记录异常时遇到问题。我正在尝试将文件复制到C:\Windows\System32,如果日志文件出错,我想在日志文件中添加一行错误。到目前为止,我已经尝试了两种方法

例1:

例2:


我可以将项目添加到日志文件中,这样我就知道该文件没有权限问题。我遗漏了什么?

我相信您收到的错误是不可终止的。这就是为什么它不会在一个捕捉块中结束

尝试此操作,而不是复制项目行:

Copy-Item $scriptPath\Devcon.exe C:\Windows\System32 -ErrorAction Stop

.

这就解决了问题。非常感谢。方法1不适用于这些变量名
$error
是一个保留的自动变量名,用于存储全局错误列表,不能将其用作循环变量。一般来说,@neolik是正确的,您需要将
ErrorAction
设置为
Stop
以强制。如果您更改了变量名(例如,
foreach($err in$errors)
),如果您愿意,您仍然可以使用总体方法#1。
$LogPath = "C:\Test.txt
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition

Try{
    Copy-Item $scriptPath\Devcon.exe C:\Windows\System32
}
Catch [System.Exception]
{
    add-content -Path $LogPath -Value "There was an error why trying to copy the file." -Force
    add-content -Path $LogPath -Value $Error -Force
}
Copy-Item $scriptPath\Devcon.exe C:\Windows\System32 -ErrorAction Stop