Tag: powershell v2.0

如何使用PowerShell在Excel中只保留必要的工作簿?

我有几个excel文件,其中每个文件有多个工作簿。 假设以下是工作簿名称。 Introduction Testcase Testresult 还假设所有的xls文件都在同一个文件夹下(例如:C:\ Servers) Testsample.xlsx TestExecution.xlsx and few more xlsx files … 我想创build结果文件,只有testresult工作簿应该在那里。 结果文件, Testsample-res.xlsx TestExecution-res.xlsx和更多的结果xlsx文件 如何仅保留新的xls文件中的testresult工作簿? (使用powershell脚本)

创build/修改Excel电子表格而不使用PowerShell中的Com对象?

有没有办法使用PowerShell生成Excel电子表格而不使用COM对象? 我有几个非常难看的脚本,打开一个Excel Com对象,添加数据,运行一些macros,并保存文件来创build我需要的报告。 如果我可以定义电子表格格式,然后使用PowerShell将csv转换为该格式,我认为它会更快,并且整体上更好的脚本。 我怎么能这样做? 可能吗?

脚本来比较/对比两个单独的Excel文件 – 两者的导出差异

所以,今天我得到了一个任务在我的桌子上,我似乎无法得到这个脚本正常工作,完成上述任务。 我的老板给了我两个单独的.xlsx文件和两个名称列表。 她要求我查找并列出哪些名称出现在两个excel文件中,还要查找并列出哪些名称不会在每个文件上单独出现。 例如 FileA有Henry和Terry FileB有Henry和Samantha 生成FileC以显示Henry出现在FileA和FileB上 生成FileD以显示Terry出现在FileA但不是FileB 生成FileE以显示Samantha显示在FileB上,但不显示FileA 我开始尝试做拉比较列表的第一部分,但我已经不能得到这个工作。 它完成,但它不是正确的出口。 所有的用户列在列A中的两个xlsx文件中。 $strReference = Get-Content "C:\Users\person\Desktop\FileA.xlsx" $strDifference = Get-Content "C:\Users\person\Desktop\FileB.xlsx" Compare-Object $strReference $strDifference

根据值在Excel电子表格中放入一个是或否

提前致谢! 这里是代码:我想收集下面的variables的值… $Sheet3.Cells.Item($intRowDisk, 4) = $objItem.Size/1024/1024/1024 – $objItem.FreeSpace/1024/1024/1024 然后,我想比较该值,如果它大于100 GB,则在excel电子表格的列中放置值“是”或“否”。 if ( $Sheet3.Cells.Item($intRowDisk, 4) -gt 100 ) { $Sheet1.Cells.Item($intRow, 12) = write "Yes" 但我得到错误:错误:运算符'-gt'的错误参数:无法比较“System .__ ComObject”到“100”。 错误:“不能将”System.Int32“types的”100“值转换为键入”系统“。 错误:__ComObject“。”。 IME_InventoryV1.8.ps1(124):错误:在行:124 char:49错误:+ if($ Sheet3.Cells.Item($ intRowDisk,4)-gt <<<< 100){错误:+ CategoryInfo:InvalidOperation :(:) [],RuntimeException错误:+ FullyQualifiedErrorId:BadOperatorArgument

在PowerShell中将二维数组写入Excel范围对象的Value2属性

我是PowerShell的新手,似乎无法弄清楚为什么在下面的代码中的第一个方法不起作用,而第二种方法(注释掉)。 我试图将数据库logging集的结果写入Excel文件,所以我需要一个dynamic可扩展的数组。 我知道如何做到这一点与第一种types的数组,但不是与第二种types。 我的问题将得到解决,如果: 你知道如何dynamic扩展第二种types的数组 编辑:如这里提到http://powershell.com/cs/blogs/tips/archive/2008/12/05/multidimensional-arrays.aspx这是不可能的。 知道如何将第一个types的数组写入范围 编辑:或者,你知道一个有效的方法来将第一个types的数组转换为第二个types。 代码: #need this to work around bug if you have a non us-locale and English excel: http://support.microsoft.com/default.aspx?scid=kb;en-us;320369 [System.Threading.Thread]::CurrentThread.CurrentCulture = "en-US" # This doesn't work $values = @(('test1','test2'),('test3','test4')) # This works <# $values = New-Object 'object[,]' 2,2 $values[0,0] = 'test1' $values[0,1] = 'test2' $values[1,0] = 'test3' $values[1,1] = […]

通过PoSh保存/closures.xls文件时禁用Excel兼容性检查器

我正在使用PoSh脚本来打开/编辑/保存/closures.xls文件。 当文件打开时,我很确定它是由Excel 2010处理的。 我正在使用这里find的脚本,除了指向我的文件path以外没有任何更改。 它的工作方式就像我需要它的工作,但是当它处于进程的保存/closures阶段时,将出现Excel兼容性检查程序,并且必须单击“确定”才能提交。 有什么办法来禁用PoSh脚本中的兼容性检查器?

无法从PowerShell中selectExcel工作表

我只是学习PowerShell,不幸的是坚持使用V2而不是最新版本。 我想要做的是打开Excel 2010并select一个特定的工作表。 问题是我不能select我感兴趣的工作表。这是我的代码: $objExcel=New-Object -ComObject Excel.Application $objExcel.Visible=$True $workbook=$objExcel.Workbooks.Open($excelfile) $worksheet = $workbook.worksheets | where {$_.name -eq 'AnalysisMain'} Write-Output "worksheet: $worksheet" 我已经validation了工作表名拼写正确,代码看起来不错,但结果是没有工作表返回 – 结果为空。 我去哪里了?

尝试将数据从XML移动到Excel电子表格

我正试图学习如何使用PowerShell来加速工作中的一些任务。 我的目标是创build一个XML文档,列出有关产品的一些数据,并从某个定期的子节点获取数据,并将其放入Excel的新行中。 所以XML可能看起来像这样(包括“序列”属性): <xml> <tracks> <track sequence="1"> <tracktitle>StuffIWant</tracktitle> </track> <track sequence="2"> <tracktitle>StuffIWant2</tracktitle> </track> <track sequence="3"> <tracktitle>StuffIWant3</tracktitle> </track> </tracks> </xml> 我想把每个tracktitle放在excel中成行。 我在哪里可以放置一个特定的东西在Excel中,就像一个单一的实体,如xml.artist.artistname ,但如果我想循环过程抓住所有的轨道,然后我不知道如何正确写循环。 我已经尝试了一堆不同的东西,但是这里的东西在我的脑海中是最有意义的( $books是我正在使用的XML文档): $row = 5 foreach ($track in $books.tracks) { $track = $books.tracks.track.tracktitle $excelworksheet.cells.item($row, 2) = $track $row++ }

使用PowerShell打开Excel文件时缺lessmacros

我试图写的PowerShell脚本的目的是 – 打开一个Excel文档并运行一个macros。 (该macros存储在个人工作簿文件personal.xlsb ,并成功运行) 问题 – 当通过PowerShell代码打开excel文件时,它打开正常,但是通过调用Run("NameOfMacro")macros时,出现错误,指出未findmacros。 我试图find打开的Excel文件中的macros,它不会出现在macros列表中。 这似乎是因为personal.xlsb文件不加载。 所以我closures了excel文件,手动打开它,但macros仍然丢失。 然后,我手动打开personal.xlsb文件,并注意到该macros存在,但是macros仍然不会出现在Excel文件或任何其他Excel我打开文件。 试图了解为什么personal.xlsb文件突然停止加载后,一个令人沮丧的小时。 我注意到另一件事情 – 如果我杀了由PowerShell代码(通过任务pipe理器窗口)启动的excel.exe进程,然后打开任何Excel文档,macros可用! 所以我已经缩小了这个问题 – macros不可用,因为Personal.xlsb不打开/加载当我通过PowerShell打开Excel文件。 有没有人有一个想法为什么会发生这种情况,我需要做什么来解决这个问题? 代码参考 $excel = New-Object -comobject Excel.Application $FilePath = "D:\DailyReport.xls" $workbook = $excel.Workbooks.Open($FilePath) $excel.Visible = $true $worksheet = $workbook.worksheets.item(1) $excel.Run("SelectDataFromReport") 错误我得到 – 使用“31”参数调用“运行”的exception:“无法运行macros”SelectDataFromReport“macros可能在此工作簿中不可用,或者所有macros都可能被禁用。 在行:18 char:11 + $ excel.Run <<<<(“SelectDataFromReport”)+ CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException 顺便说一句,我默认使用64位PowerShell控制台,但我也尝试使用32位控制台运行代码,但没有什么区别。 在Excel中,我已经添加了位置作为一个值得信赖的位置,我已经允许在编辑模式下默认打开excel文件。

只有在索引号已知使用PowerShell时,才能更改一个单元格的值

我有一个保存电话号码的CSV文件。 根据使用的数字,这些数字的状态将是SPARE或USED。 每当我需要find可用的下一个SPARE编号时,我想运行powershell脚本find下一个SPARE编号,并将其分配给新用户(稍后执行),并将该特定编号的值更改为USED。 我已经设法findSPARE号码使用下面的脚本,但现在一旦find号码,我想改变该号码的状态为USED。 $LineUri = @() $Status = @() $csv = Import-Csv C:\Users\user\Desktop\PhoneData.csv -Delimiter "," |` ForEach-Object { $LineUri += $_.LineUri $Status += $_.Status } $currentStatus = "Spare" if ($Status -contains $currentStatus) { $Where = [array]::IndexOf($Status, $currentStatus) $AvailableURI = $LineUri[$Where] Write-Host "Next Uri Available: " $LineUri[$Where] $changeWhere = [array]::IndexOf($LineUri, $AvailableURI) } 我的CSV文件如下所示: Name LineUri […]