仅在配置邮件帐户时才会出现问题 - 我仍然会感谢解决方案
我需要一些帮助。我发现这个小脚本有一个非常奇怪的习惯。我完全不知道为什么会发生这种情况。 如果我浏览下面发布的代码, Microsoft Outlook 将启动。只要我终止 Outlook 进程,脚本就会卡住!为什么这段代码会启动Outlook? 我迷路了!
$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
答案 0 :(得分:3)
此处的问题是,当您运行$wb.Worksheets.add()
时,它会将新工作表返回到管道(这就是您杀死Outlook时显示工作表属性的原因。)
我相信Worksheet的MailEnvelope属性是导致Outlook打开的原因(如果存储Sheet并返回MailEnvelope属性,则会发生相同的行为)。
要解决此问题,您可以存储返回的工作表,使用Out-Null cmdlet或将工作表强制转换为void:$ws = $wb.Worksheets.add()
或
$wb.Worksheets.add() | Out-Null
或[void] $wb.Worksheets.add()
答案 1 :(得分:0)