我在这里找到了这个脚本,请帮助我更好地理解这个。
我去寻找“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 :(得分:3)
1。什么是脚本的整个“gps”部分?
PS C:\> Get-Alias -Name gps
CommandType Name ModuleName
----------- ---- ----------
Alias gps -> Get-Process
2。这个脚本的哪一部分是覆盖我的原始CSV并在PC的任务管理器列表中复制?流程。
本声明:
gps | Export-Csv $csvpath -NoTypeInformation
3。这是做什么的,为什么51? ($ xlOut,51)
51是xlOpenXMLWorkbook
file type的数值,它作为SaveAs()
方法的第二个参数传递(因此工作簿以正确的格式保存)。
至于-COM
:这是参数-ComObject
的缩写。 New-Object
默认创建.net对象,但Office应用程序必须实例化为COM对象,因此需要额外的参数。
答案 1 :(得分:1)
脚本的整个“gps”部分是什么?
脚本开头和结尾的两个(gps excel -ErrorAction SilentlyContinue).count
行计算运行的Excel可执行文件的数量。 gps
是get-process
的速记别名。您可以通过返回help gps
来了解更多信息:
NAME
获取进程概要
获取在本地计算机或远程计算机上运行的进程。
除了计算运行的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
。