我在这里找到了这个剧本,请帮助我更好地理解这一点。
我去找“新对象”(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
发布于 2015-06-15 18:33:50
脚本的整个"gps“部分是什么?
脚本开始和结束时的两行(gps excel -ErrorAction SilentlyContinue).count
行计算运行的Excel可执行文件的数量。gps
是get-process
的缩写别名。您可以通过执行返回的help gps
来了解更多信息:
名字 获取过程 提要 获取在本地计算机或远程计算机上运行的进程。
这两行只用于计数正在运行的Excel进程并将值输出到控制台。它们不影响脚本的其余部分,似乎是对脚本的原始作者的某种理智检查。
这个脚本的哪个部分正在覆盖我原来的CSV并在PC的任务管理器列表中复制?进程.
下一部分:
$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
。
https://stackoverflow.com/questions/30851971
复制相似问题