2015-01-12 2 views
0

У меня есть этот фрагмент кода powershell, ниже которого создается отдельный текстовый файл в папке C: \ Users \ XX \ Desktop \ info \ из каждого отдельного zip-файла в папке C: \ Users \ XX \ Desktop \ Powershell \ Zip, с именем текстовых файлов, являющимся именем zip-файлов.Добавление выходов в существующий текстовый файл

Get-ChildItem -Path "C:\Users\XX\Desktop\Powershell\Zip" -Recurse -exclude '*.info' | ForEach { [System.IO.File]::WriteAllText("C:\Users\XX\Desktop\info\"+ $_.Name + ".txt", $_.FullName)} 

наверх, что у меня есть сценарий, ниже которого получает дату последнего изменения для архивных файлов

$path = 'C:\Users\XX\Desktop\Powershell\Zip' 

$files = Get-ChildItem $path -Recurse -excluse '*.info' 

foreach($file in $files){ 

$file.lastwritetime 

, а также эта команда, которая получает имя компьютера

{ 
(Get-WmiObject Win32_Computersystem).name 
} 

Все эти будет в одном скрипте, но мне нужны выходы 2-го и 3-го секций скрипта для добавления в текстовый файл, созданный в первом разделе скрипта, добавляемый к соответствующему файлу.

Я пробовал пару команд, главная из которых - [System.IO.File] :: AppendAllText, но я не могу найти что-либо с этим.

Любые идеи на правильном пути Я должен это делать?

Thankyou.

ответ

1

Вы можете попробовать это:

$path = 'C:\Users\XX\Desktop\Powershell\Zip' 

$files = Get-ChildItem $path -Recurse -Exclude '*.info' 

$ComputerName = (Get-WmiObject Win32_Computersystem).name 

foreach($file in $files) { 

    $OutputFilePath = "C:\Users\XX\Desktop\info\"+ $file.Name + ".txt" 

    [System.IO.File]::WriteAllText($OutputFilePath, $file.FullName) 

    $file.lastwritetime | Add-Content $OutputFilePath 

    $ComputerName | Add-Content $OutputFilePath 
} 
+0

Перемещение 'Get-WMIObject' из цикла, нет необходимости повторно запрашивать имя машины, как вы получите тот же ответ каждый раз. WMI также может быть довольно медленным, поэтому это может значительно замедлить время выполнения. – arco444

+0

Правда. Я отредактировал свой ответ, чтобы переместить «Get-WmiObject Win32_Computersystem» из цикла Foreach, чтобы избежать повторяющегося запроса WMI. –

Смежные вопросы