Powershell return 个邮箱在 7 天内创建并驻留在指定的服务器上。
Powershell return mailboxes created within 7 days and resides on specified server.
我需要对 7 天内创建的邮箱自动应用 exchange 2010 保留策略。但我还需要排除任何非美国服务器,因为这些服务器由海外 IT 管理。
这是我的脚本的前言,它允许在没有任何人工交互的情况下交换连接。这样我就可以在 windows 中安排这个了。
If (Test-Path C:\temp\mycred.xml) {$UserCredential = Import-CliXML C:\temp\mycred.xml}
else{
Get-Credential | Export-CliXml C:\temp\mycred.xml
$UserCredential = Import-CliXML C:\temp\mycred.xml}
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://munprdcasht04.exchange.com/PowerShell/ -Authentication Kerberos -Credential $UserCredential
import-PSSession $Session
这是我在 7 天内创建 return 个邮箱的当前代码
Get-Mailbox -ResultSize Unlimited| Where-Object {
($_.WhenCreated –ge ((Get-Date).Adddays(-7)))} |
ft -auto Name,WhenCreated,Retentionpolicy,servername
这对我有用,但是当我添加一个操作员来限制特定服务器上的邮箱时,命令完成但不打印任何结果,所以我假设有 0 个匹配记录。
Get-Mailbox -ResultSize Unlimited| Where-Object {
($_.WhenCreated –ge ((Get-Date).Adddays(-7))) -and
($_.ServerName -contains "munprdmbxa") |
ft -auto Name,WhenCreated,Retentionpolicy,servername
我还没有考虑实际启用保留策略,因为我只是想 return 我的目标数据,然后再开始冒险。我感谢任何帮助。
-contains
in powershell returns True
仅当字符串完全匹配时。它在单个字符串上的作用更像 -eq
,但也能够确定元素是否包含在集合中。
例如
$test = "aaa"
$test -contains "aaa"
$test = "aaa","bbb","ccc"
$test -contains "aaa"
以上两个会 return True
,但是,对于子字符串它不会 return 正确并且通配符不适用于它。
$test = "aaa.domain.com"
$test -contains "aaa"
$test = "aaa.domain.com"
$test -contains "*aaa*"
会returnFalse
因此,如果服务器名称是带有域后缀等的 FQDN,则该字符串将不会完全匹配。如果您改用 -like
操作,则可以使用通配符匹配给定字符串中的字符串子集:
例如:
$test = "aaa.domain.com"
$test -like "*aa*"
$test = "aaa.domain.com"
$test -like "aa*.com"
都会returnTrue
因此使用 -like
运算符更有可能避免假阴性结果。
我需要对 7 天内创建的邮箱自动应用 exchange 2010 保留策略。但我还需要排除任何非美国服务器,因为这些服务器由海外 IT 管理。
这是我的脚本的前言,它允许在没有任何人工交互的情况下交换连接。这样我就可以在 windows 中安排这个了。
If (Test-Path C:\temp\mycred.xml) {$UserCredential = Import-CliXML C:\temp\mycred.xml}
else{
Get-Credential | Export-CliXml C:\temp\mycred.xml
$UserCredential = Import-CliXML C:\temp\mycred.xml}
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://munprdcasht04.exchange.com/PowerShell/ -Authentication Kerberos -Credential $UserCredential
import-PSSession $Session
这是我在 7 天内创建 return 个邮箱的当前代码
Get-Mailbox -ResultSize Unlimited| Where-Object {
($_.WhenCreated –ge ((Get-Date).Adddays(-7)))} |
ft -auto Name,WhenCreated,Retentionpolicy,servername
这对我有用,但是当我添加一个操作员来限制特定服务器上的邮箱时,命令完成但不打印任何结果,所以我假设有 0 个匹配记录。
Get-Mailbox -ResultSize Unlimited| Where-Object {
($_.WhenCreated –ge ((Get-Date).Adddays(-7))) -and
($_.ServerName -contains "munprdmbxa") |
ft -auto Name,WhenCreated,Retentionpolicy,servername
我还没有考虑实际启用保留策略,因为我只是想 return 我的目标数据,然后再开始冒险。我感谢任何帮助。
-contains
in powershell returns True
仅当字符串完全匹配时。它在单个字符串上的作用更像 -eq
,但也能够确定元素是否包含在集合中。
例如
$test = "aaa"
$test -contains "aaa"
$test = "aaa","bbb","ccc"
$test -contains "aaa"
以上两个会 return True
,但是,对于子字符串它不会 return 正确并且通配符不适用于它。
$test = "aaa.domain.com"
$test -contains "aaa"
$test = "aaa.domain.com"
$test -contains "*aaa*"
会returnFalse
因此,如果服务器名称是带有域后缀等的 FQDN,则该字符串将不会完全匹配。如果您改用 -like
操作,则可以使用通配符匹配给定字符串中的字符串子集:
例如:
$test = "aaa.domain.com"
$test -like "*aa*"
$test = "aaa.domain.com"
$test -like "aa*.com"
都会returnTrue
因此使用 -like
运算符更有可能避免假阴性结果。