Get-ChildItem -Path E:\Server_Data\data\2015 -Recurse –File -include "*.txt","*.csv" | Where-Object {$_.Name -like "*transaction*"} | Select-Object -ExpandProperty FullName,LastWriteTime
我正在尝试使用Get-ChildItem
和Select-Object
属性列出文件夹中的所有文件。当我尝试使用FullName变量列出完全限定的文件名时,文件名将被截断。试图使用-ExpandProperty
来获取完全限定的文件名。它适用于一个字段,但如果我尝试列出FullName和LastWriteTime,它就无法正常工作。
power shell命令的输出将在MS SQL Server中用于将文件名加载到特定的表中。
请为我的目的建议正确的语法。感谢您的帮助!
答案 0 :(得分:1)
如果您 要执行此操作以在控制台上显示,那么您可以查看使用Format-Table
-Wrap
参数来显示所有文本控制台没有截断输出。
Get-ChildItem -Path E:\Server_Data\data\2015 -Recurse –File -include "*.txt","*.csv" |Where-Object {
$_.Name -like "*transaction*"
} | Format-Table FullName,LastWriteTime -Wrap
如果您计划对我们的输出执行任何其他操作,那么您将需要避免使用Format- * cmdlet,因为它们会向对象添加自定义格式并在管道中使其无效。
答案 1 :(得分:1)
如果您在其他程序中使用输出,则应转换为CSV,JSON或XML,而不是复制格式化的输出。也可以使用PowerShell命令直接插入SQL。
Get-ChildItem -Path E:\Server_Data\data\2015 -Recurse –File -include "*.txt","*.csv" |
Where-Object {$_.Name -like "*transaction*"} |
Select-Object FullName,LastWriteTime |
ConvertTo-Csv -NoTypeInformation
最后一个命令的其他选项是:
ConvertTo-Json
ConvertTo-xml -As String -NoTypeInformation
迟到的答案,但自从PowerShell 3.0以来就已经存在,所以应该是一个选项。
答案 2 :(得分:1)
希望我不迟到。这个示例对我有用(Get-Service,具有嵌入数据“集合”的多个属性)
Get-Service |
Select-Object
Name,
Status,
...
然后在脚本的下一行中,要扩展的下一个对象应该像这样
@{Name="CustomCol01";Expression={$_.ServicesDependedOn} },
@{Name="CustomCol02";Expression={$_.DependentService} }
在示例中,我需要扩展的2个有问题的对象是 ServicesDependedOn 和 DependentService
是的,通过自定义新列,它可以为您扩展任何对象
即使将最终输出重定向到这样的csv,也可以进行测试
... > myfile.csv
答案 3 :(得分:0)
根据您的用例和输入,一种方法是在管道中使用两个Select-Object
cmdlet,一个用于定义属性数组,另一个用于扩展它们:
PS C:\> $Name,$DisplayName,$Status = Get-Service
| Select-Object -First 1 -Property @{
Name = "MyProperties"
Expression = { $_.Name,$_.DisplayName,$_.DisplayName }
} | Select-Object -ExpandProperty MyProperties
答案 4 :(得分:0)
Get-ChildItem -Path E:\Server_Data\main.sweetbeam.net\data\2015 -Recurse –File -include "*.txt","*.csv" | Where-Object {$_.Name -like "*transaction*"} | Select-Object @{Name="test";Expression={$_.FullName + "`t" + $_.LastWriteTime}} | Select-Object -ExpandProperty test
合并这两个字段并将派生字段用于我的目的。
答案 5 :(得分:0)
get-eventlog Security `
-EntryType SuccessAudit `
-Newest 50 `
-InstanceId 4624,4634 `
-ComputerName $env:COMPUTERNAME |
Select-Object -Property *
get-eventlog Security `
-EntryType SuccessAudit `
-Newest 50 `
-InstanceId 4624,4634 `
-ComputerName $env:COMPUTERNAME |
Select-Object -Property TimeGenerated,EventID,Message -PipelineVariable myEvent |
Foreach-Object -Process {
convertTo-Json -InputObject @{
TimeGenerated = (Get-Date $myEvent.TimeGenerated)
EventID = $myEvent.EventID
Message = $myEvent.Message.Substring(0, $myEvent.Message.IndexOf("`r"))
} -Depth 1
}