Powershell | Com对象Excel |是否打开outlook?
只有在未配置邮件帐户时才会出现问题-但我仍希望有一个解决方案 我需要一些帮助。我发现这个小剧本有一个很奇怪的习惯。我完全不知道为什么会这样。 如果我运行下面发布的代码,Microsoft Outlook将启动。只要我不终止Outlook进程,脚本就会被卡住!为什么这段代码会启动Outlook? 我迷路了Powershell | Com对象Excel |是否打开outlook?,excel,powershell,com,Excel,Powershell,Com,只有在未配置邮件帐户时才会出现问题-但我仍希望有一个解决方案 我需要一些帮助。我发现这个小剧本有一个很奇怪的习惯。我完全不知道为什么会这样。 如果我运行下面发布的代码,Microsoft Outlook将启动。只要我不终止Outlook进程,脚本就会被卡住!为什么这段代码会启动Outlook? 我迷路了 $Path = "C:\test.xls" #Excelvar: $Row = [int] 2 $Excel = New-Ob
$Path = "C:\test.xls"
#Excelvar:
$Row = [int] 2
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $true
$Excel.DisplayAlerts = $false
#Sheets:
$ADUsers = "Active Directory Users"
$Groups = "Create Groups"
$UsertoGroup = "User to groups"
$DNS = "DNS"
#$Worksheet = $Workbook.Sheets.Add()
$checkxls = test-path -pathtype Any $Path
if ($checkxls -eq $false) {
$wb = $Excel.Workbooks.Add()
$wb.Worksheets.add()
$wb.SaveAs($Path)
$wb.Close()
$Excel.Quit()
提前谢谢
Outlook终止后的Powershell输出:
Application : Microsoft.Office.Interop.Excel.ApplicationClass
Creator : 1480803660
Parent : System.__ComObject
CodeName :
_CodeName :
Index : 1
Name : Tabelle4
Next : System.__ComObject
OnDoubleClick :
OnSheetActivate :
OnSheetDeactivate :
PageSetup : System.__ComObject
Previous :
ProtectContents : False
ProtectDrawingObjects : False
ProtectionMode : False
ProtectScenarios : False
Visible : -1
Shapes : System.__ComObject
TransitionExpEval : False
AutoFilterMode : False
EnableCalculation : True
Cells : System.__ComObject
CircularReference :
Columns : System.__ComObject
ConsolidationFunction : -4157
ConsolidationOptions : {False, False, False}
ConsolidationSources :
DisplayAutomaticPageBreaks : False
EnableAutoFilter : False
EnableSelection : 0
EnableOutlining : False
EnablePivotTable : False
FilterMode : False
Names : System.__ComObject
OnCalculate :
OnData :
OnEntry :
Outline : System.__ComObject
Rows : System.__ComObject
ScrollArea :
StandardHeight : 15
StandardWidth : 10,71
TransitionFormEntry : False
Type : -4167
UsedRange : System.__ComObject
HPageBreaks : System.__ComObject
VPageBreaks : System.__ComObject
QueryTables : System.__ComObject
DisplayPageBreaks : False
Comments : System.__ComObject
Hyperlinks : System.__ComObject
_DisplayRightToLeft : False
AutoFilter :
DisplayRightToLeft : False
Scripts : System.__ComObject
Tab : System.__ComObject
MailEnvelope :
CustomProperties : System.__ComObject
SmartTags : System.__ComObject
Protection : System.__ComObject
ListObjects : System.__ComObject
EnableFormatConditionsCalculation : True
Sort : System.__ComObject
PrintedCommentPages : 0
您可以尝试在“安全模式”下运行Excel:
这里的问题是,当您运行
$wb.Worksheets.add()
时,它会将新工作表返回到管道中(这就是为什么在关闭Outlook时会显示工作表属性)
我相信工作表的MailEnvelope属性是导致Outlook打开的原因(如果存储工作表并返回MailEnvelope属性,则会发生相同的行为)
要解决此问题,您可以存储返回的工作表,使用Out-Null cmdlet或将工作表强制转换为void:$ws=$wb.Worksheets.add()
或
$wb.Worksheets.add()| Out Null
或[void]$wb.Worksheets.add()
谢谢您的建议,但我如何将其转换为powershell?无法在powershell中执行此操作。你能给我一个在powershell中以“安全模式”运行Excel的代码示例吗?不。如果没有帮助,我会删除答案。我也经历过同样的行为。我有,你有没有得到任何反馈?