【发布时间】:2016-01-20 19:32:26
【问题描述】:
您好,我希望你们能帮助我解决困扰我几天的问题。 当我将脚本的结果导出到 csv 文件时,我无法获得正确的输出,我得到以下内容。
函数 Get-ScheduledTask { [CmdletBinding()] 参数( [范围( 强制=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)] [字符串[]]$计算机名, [参数(强制=$false)] [字符串[]]$RunAsUser, [参数(强制=$false)] [字符串[]]$任务名称, [参数(强制=$false)] [别名(“WS”)] [开关]$WithSpace ) 开始 { $Script:任务 = @() } 过程 { $schtask = schtasks.exe /query /s $ComputerName /V /FO CSV | ConvertFrom-CSV Write-Verbose “从 $ComputerName 获取计划任务” 如果 ($schtask) { foreach($schtask 中的 $sch) { if ($sch."Run As User" -match "$($RunAsUser)" -and $sch.TaskName -match "$($TaskName)") { Write-Verbose "$Computername ($sch.TaskName).replace('\','') $sch.'Run As User'" $sch | Get-Member -MemberType 属性 | ForEach -Begin {$hash=@{}} -Process { 如果 ($WithSpace) { ($hash.($_.Name)) = $sch.($_.Name) } 别的 { ($hash.($($_.Name).replace(" ","))) = $sch.($_.Name) } } -结尾 { $script:Tasks += (New-Object -TypeName PSObject -Property $hash) } } } } } 结尾 { $Script:任务 } } $ComputerName = "SE94ABH02" $ServiceAccounts = 获取内容“D:\Scripts\Test-Peter\Testing\ServiceAccounts.txt” $obj = New-Object –TypeName PSObject $obj | Add-Member -MemberType NoteProperty -Name ServerName -Value $ComputerName $obj | Add-Member -MemberType NoteProperty -Name TaskName -Value ([string]::Join(",",(@()))) $obj | Add-Member -MemberType NoteProperty -Name ScheduledTaskState -Value ([string]::Join(",",(@()))) $obj | Add-Member -MemberType NoteProperty -Name LogonMode -Value ([string]::Join(",",(@()))) $obj | Add-Member -MemberType NoteProperty -Name Author -Value ([string]::Join(",",(@()))) $obj | Add-Member -MemberType NoteProperty -Name RunAsUser -Value ([string]::Join(",",(@()))) $obj | Add-Member -MemberType NoteProperty -Name ServiceName -Value ([string]::Join(",",(@()))) $obj | Add-Member -MemberType NoteProperty -Name StartName -Value ([string]::Join(",",(@()))) $SCHTSk = 获取计划任务 $ComputerName | Where-Object {$_.RunAsUser -like "NLKVKF94*"} |选择任务名称、计划任务状态、登录模式、作者、RunAsUser 如果($SCHTSK){ $TEMP = @() foreach ($SCHTSK 中的 $TskItem) { 如果 ($TskItem -match "NLKVKF94") { $TEMP += $TskItem $信息=@{ '任务名称'=$TEMP.任务名称; 'ScheduledTaskState'=$TEMP.ScheduledTaskState; 'LogonMode'=$TEMP.LogonMode; '作者'=$TEMP.Author; 'RunAsUser'=$TEMP.RunAsUser } } } $tskobj = 新对象 -TypeName PSObject -Property $info $obj.TaskName += $tskobj.TaskName $obj.ScheduledTaskState += $tskobj.ScheduledTaskState $obj.LogonMode += $tskobj.LogonMode $obj.Author += $tskobj.Author $obj.RunAsUser += $tskobj.RunAsUser } $WmiObjectResultaat = Get-WmiObject -Class win32_service -computer $ComputerName |选择对象 __SERVER,Name,StartName 如果($WmiObjectResultaat){ $TEMP = @() foreach($WmiObjectResultaat 中的 $item){ if ($ServiceAccounts - 包含 $Item.StartName) { $TEMP += $项目 $信息=@{ '名称'=$TEMP.Name; '开始名'=$TEMP.开始名 } } } $Srvobj = New-Object -TypeName PSObject -Property $info $obj.ServiceName += $Srvobj.Name $obj.StartName += $Srvobj.Startname } $obj | Export-Csv -Path "D:\Scripts\Test-Peter\Testing\lalala.csv" -NoTypeInformation【问题讨论】:
-
如果您使用的是 Powershell,您可能需要查看 Windows 附带的 the
ScheduledTasksmodule。
标签: csv powershell tostring