首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开始-工作连接到联机交换

开始-工作连接到联机交换
EN

Stack Overflow用户
提问于 2022-04-09 05:42:02
回答 1查看 148关注 0票数 1

我需要对100的邮箱运行并行搜索-邮箱cmdlet来删除内容,但是它们首先需要符合某些参数,比如启用了某些CAS协议,并提供了一个转发地址。我还对其进行了参数化,以便将一个$maxJobCount int传递给它,以便运行者可以指定并发运行的作业的最大数量,以便考虑到其机器上的资源。

得到的东西工作,然后得到启动-作业组件,这是一个相当简单的功能。

代码语言:javascript
复制
function _StartJob {
    param (
        $mailAddress
    )
    Start-Job -Name $mailAddress -Scriptblock { 
        Get-EXOMailbox $mailAddress -PropertySets Delivery 
    }
}

这是返回一个错误,说明在使用cmdlet之前我需要运行,这是我在Start中了解到脚本块的地方-作业实际上是新的PowerShell.exe进程,所以不要继承模块和会话选项。

有没有人知道解决这个问题的更简单的方法?在MFA环境中,它要么意味着坐在那里粘贴密码几百次,要么说服变更板和Secops部门允许我设置一个具有删除权限的图形应用程序.都很痛苦

谢谢你的建议

EN

回答 1

Stack Overflow用户

发布于 2022-09-28 16:50:59

你只要把书签放进你想要的地方就行。

代码语言:javascript
复制
$kvCertName = 'Cert'
#I am using azure automation here to get the cert its different for keyvault
$kvCertPFX = Get-AutomationCertificate -Name $kvCertName
$tenantid = 'yourcompany.onmicrosoft.com'
$appid = '00000000-46da-6666-5555-33333cfe77ec'
$startDate = ([datetime]::Today).AddDays(-7)

#Build the script block
$block = {
    Param(
        $kvCert,
        $appID,
        $tenantID,
        $n,
        $startdate
    )
    $newCertPFX = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($kvCert)
    Connect-ExchangeOnline -Certificate ([System.Security.Cryptography.X509Certificates.X509Certificate2]$newCertPFX) -AppID $appID -Organization $tenantID -ErrorAction Stop
    Search-AdminAuditLog -StartDate $startDate.adddays($n) -EndDate $($startDate.AddDays($n) | get-date -Hour 23 -Minute 59 -Second 59) -ExternalAccess:$false -ResultSize 250000
    Disconnect-ExchangeOnline -confirm:$false
}


#Remove all jobs created
Get-Job | Remove-Job


#Run All the Parrallel Jobs
$num = 0..6
$kvCert = $kvCertPFX.Export(3)
foreach($n in $num){Start-Job -Scriptblock $Block -ArgumentList @($kvCert,$appID,$tenantid,$n,$startdate)}


#Wait for all jobs to finish.
do {start-sleep 1}
until ($(Get-Job -State Running).count -eq 0)


#Get information from each job.
$adminPowerShellAuditLog = $null
foreach($job in Get-Job){$adminPowerShellAuditLog+= Receive-Job -Id ($job.Id)}

Write-Output $adminPowerShellAuditLog
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71805548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档