首页 > 解决方案 > 从 PowerShell 中注册的事件输出中拆分字符串

问题描述

我刚刚开始使用IO.FIleSystemWatcher. 我当前的代码工作并提醒我在所需位置创建的文件,但是我想将一些变量输出并拆分字符串。我无法让拆分部分工作。

功能代码:

$folder = 'D:\Output'
$filter = '*.jpg'

$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}

Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore green
Out-File D:\Output\scans\$name.txt    
}

$name将始终像 'file.name.fn_xxx.jpg' 这样格式化,我想用来split从 中提取 'file' $name,例如:

$name.split('.')[0]

但是,据我所知,这无济于事。例如,我可以输出一个文件$name名作为文件名,但如果我首先尝试拆分它,则没有任何输出。

非功能代码:

Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore green

$name = $name.split('.')[0]    
Out-File D:\Output\scans\$name.txt    
}

这有点过头了,所以任何建议或建议都会受到赞赏。

谢谢

标签: powershellfilesystemwatcher

解决方案


我最终通过简单地使用另一个变量来解决它。

$folder = 'D:\Output'
$filter = '*.jpg'

$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}

Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore green
Write-Host "$name"

$x = $name.split(".")[0]
Out-File D:\Output\scans\$x.txt

我不确定为什么会这样,但确实如此。如果有人知道为什么,请发表评论!


推荐阅读