2015-06-15 7 views
2

Я нашел здесь этот скрипт, пожалуйста, помогите мне понять это лучше.PowerShell - конвертировать CSV в XLSX

  1. В чем заключается вся часть «gps» для скрипта?
  2. Какая часть этого скрипта перезаписывает мой оригинальный CSV и копирует его в список задач Task Manager? Процессы.
  3. Что это делает, почему 51? ($ xlOut, 51)

Я искал «New-Object -com» и действительно не мог найти то, что думал, что найду ... Не объясняет, что делает -com или предоставляет список параметров вместе с -com. Все, что я нашел, было -comObject.

(gps excel -ErrorAction SilentlyContinue).count 
$csvpath="C:\path\to\file.csv" 
gps | Export-Csv $csvpath -NoTypeInformation 
$xl=New-Object -com "Excel.Application" 
$wb=$xl.workbooks.open($csvpath) 
$xlout=$csvpath.Replace('.csv','.xlsx') 
$wb.SaveAs($xlOut,51) 
$xl.Quit() 
(gps excel -ErrorAction SilentlyContinue).count 
+0

Ну, я вижу, что GPS - это псевдоним для командлета Get-Process ... Это начинает заставлять меня думать о том, что переписывает мои CSV-файлы с информацией о процессе от taskman. –

ответ

1

В чем заключается вся часть «gps» для скрипта?

Две (gps excel -ErrorAction SilentlyContinue).count линии в начале и в конце сценария подсчета количества исполняемых файлов Excel, работающих под управлением. gps - сокращенный псевдоним для get-process. Вы можете узнать больше, делая help gps, который возвращает:

ИМЯ
Get-Process

СИНТАКСИС
Возвращает процессы, которые выполняются на локальном компьютере или на удаленном компьютере.

Эти две строки не служат никакой другой цели, кроме как подсчитать количество выполняемых процессов Excel и вывести значение на консоль. Они не влияют на остальную часть скрипта и, по-видимому, являются своего рода проверкой здравого смысла для оригинального автора сценария.

Какая часть этого скрипта перезаписывает мой оригинальный CSV и копирует его в список задач Task Manager? Процессы.

Следующая часть:

$csvpath="C:\path\to\file.csv" 
gps | Export-Csv $csvpath -NoTypeInformation 

Это получает список всех запущенных процессов и экспорта в качестве файла CSV для $csvpath. Это будет перезаписывать файл по адресу $csvpath каждый раз, когда он запускается.

Линия $xl=New-Object -com "Excel.Application" сообщает PowerShell о запуске экземпляра Excel.Application. Поскольку Excel является COM-объектом (или, точнее, сервером автоматизации COM, работающим в собственном процессе), коммутатор -com сообщает PowerShell, что такое его ProgID. Если у вас не было -com (или указать его полное имя ComObject), то PowerShell уйдет с охоты на управляемый (.NET) тип для создания экземпляра.

Что это значит, почему 51? ($ XlOut, 51)

линии:

$xlout=$csvpath.Replace('.csv','.xlsx') 

заменяет .csv расширение в $csvpath с .xlsx создавая таким образом новое имя файла C:\path\to\file.xlsx

$wb.SaveAs($xlOut,51) 

Это говорит Excel, чтобы сохранить ваша книга в файле $xlout. Параметр 51 обычно будет значением из перечисленного типа. В этом случае это происходит из перечисления XlFileFormat, в частности XlFileFormat.xlOpenXMLWorkbook.

+0

Еще лучше объяснение. Хорошая деталь. Этот сайт является моим новым фаворитом для ответов. –

3

1. Что вся "GPS" часть сценария для?

PS C:\>Get-Alias -Name gps 

CommandType  Name            ModuleName 
-----------  ----            ---------- 
Alias   gps -> Get-Process

2. Какая часть этого сценария перезапись мой оригинальный CSV и копирование в списке TaskManager ПК? Процессы.

Это утверждение:

gps | Export-Csv $csvpath -NoTypeInformation 

3. Что это сделать, почему 51? ($ XlOut, 51)

51 это числовое значение xlOpenXMLWorkbookfile type, который передается в качестве второго параметра метода SaveAs() (поэтому рабочая книга сохраняется в правильном формате).


Что касается -COM: это короткий для параметра -ComObject. New-Object по умолчанию создает объекты .net, но приложения Office должны быть созданы как COM-объекты, поэтому необходим дополнительный параметр.

+0

Спасибо, сэр, очень информативный ответ. Теперь мой скрипт отлично работает, и я понимаю, почему. На этом посту моя репутация недостаточно высока, чтобы нажать кнопку «^», чтобы отметить ответ как полезный или я бы хотел. –

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