#powershell
#powershell
Вопрос:
У меня есть файл CSV с именем «C:testingblah.csv » в таком формате:
"Agent Name","Agent Type","File Name","Location","Added (GMT)","Created (GMT)","Last Modified (GMT)","File Size (Bytes)","File Size","Extension","Incident Type","Flagged","Ignored","Location File Name"
"Server","file","blah5.txt","\127.0.0.1c$temp","10/8/2020 21:13","10/8/2020 19:33","10/8/2020 16:26","10723331","10.23 (MB)","txt","ssn_medium_data_discover","FALSE","FALSE","\127.0.0.1c$tempblah5.txt"
Я хочу запустить команду Powershell «get-acl» в столбце «Местоположение имя файла» в файле blah.csv и вывести ее в новый CSV с владельцем и доступом в качестве новых столбцов. До сих пор мне не очень везло — вот мой код:
$file2 = import-csv -path "C:testingblah.csv"
ForEach ($file in $file2) {
get-acl -path $file."Location File Name" | Select-Object Owner,AccessToString
}
Можете ли вы направить меня в правильном направлении? Конечный результат должен содержать все столбцы в исходном csv с двумя новыми столбцами (Owner, AccessToString), которые заполняются значениями из get-acl.
Ответ №1:
С Import-Csv
помощью командлета вы получаете массив PSCutomObject, поэтому к ним легко добавить некоторые свойства, а затем повторно экспортировать в новый csv :
$file2 = Import-Csv -Path "C:testingblah.csv"
ForEach ($file in $file2) {
$infoSec = Get-Acl -Path $file."Location File Name" | Select-Object Owner, AccessToString
$file | Add-Member -MemberType NoteProperty -Name "Owner" -Value $infoSec.Owner
$file | Add-Member -MemberType NoteProperty -Name "AccessToString" -Value $infoSec.AccessToString
$file | Export-Csv -Path C:testingnewBlah.csv -Encoding UTF8 -NoTypeInformation -Append
}
Но, если вы можете, вам следует избегать использования имен свойств с пробелами, например :
"AgentName","AgentType","FileName","Location","AddedGMT","CreatedGMT","ModifiedGMT","FileSizeBytes","FileSize","Extension","IncidentType","Flagged","Ignored","FullName"
таким образом, вы можете заменить Get-Acl
строку на :
$infoSec = Get-Acl -Path $file.FullName | Select-Object Owner, AccessToString