从 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
我不确定为什么会这样,但确实如此。如果有人知道为什么请评论!
我刚刚开始使用 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
我不确定为什么会这样,但确实如此。如果有人知道为什么请评论!