从 PowerShell 中注册的事件输出中拆分字符串

Split strings from registered event output in 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$name 中提取 'file',例如:

$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    
}

这有点让我头疼,所以任何意见或建议都将不胜感激。

谢谢

我最终通过简单地使用另一个变量解决了这个问题。

$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

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