Articles of PowerShell

Exchange 2010 | Get-MailboxStatistics where子句

我有交换服务器托pipe多个域的电子邮件。 如何使Get-MailboxStatistics cmdlet仅在以特定域结尾的邮箱上显示邮箱和大小? 就像Get-MailboxStatistics WHERE EmailAddressEndsWith *emaildomain.com 谢谢。

获取发送到特定电子邮件地址的所有电子邮件,而不是邮箱(别名)

我想看到所有的电子邮件发送到一个特定的电子邮件地址,而不是所有别名的完整邮箱“。 例如,如果[email protected]是主要电子邮件地址,而[email protected]是别名,我只想看到发送到[email protected]的邮件。 Messagetrackignlog似乎将所有发送到这两个别名的电子邮件带回来。 我正在使用Exchange 2010和O365, 谢谢

如何使用-Identity <邮箱>

我试图运行的完整命令是: Start-ManagedFolderAssistant -Identity <mailbox> 我解释为: Start-ManagedFolderAssistant -Identity jack 那是对的吗? 它应该是[email protected]? 域/sockets? 我没有得到一个错误,但它没有做我认为应该。 我想要做的是强制保留策略申请一个帐户(它被设置为运行在他的收件箱发送和删除项目),因为我不想等7天自动运行。 此外,在PowerShell中使用的凭据连接不是杰克帐户,但pipe理员帐户。 这可能是问题吗?

如何使用UNCpath将文件复制到networking资源

我试图做一些非常简单的事情,从概念上说它应该起作用,但似乎没有,我不知道为什么。 我有一个文件,我需要复制到多个服务器上的多个文件夹。 我一直在寻找和尝试不同的解决scheme。 以下是我认为应该工作的内容: $servers = @("\\server1.domain.com","\\server2.domain.com","\\server3.domain.com","\\server4.domain.com") $dests = @("\E$\path1","\E$\path2","\E$\path3","\E$\path4","\E$\path5") $file = "C:\Users\user\file.txt" foreach ($server in $servers) {net use $server /USER:domain\username password {foreach ($dest in $dests) {copy-item -Path $file -Destination $server$dest}}} 其逻辑是,它会击中第一个foreach,得到第一个服务器名,做一个networking用来caching我的凭据在计算机上,击中第二个foreach,获取第一个path,然后将文件复制到第一个服务器上的第一个path,然后将文件复制到第一个服务器上的第二个path等等。在path的末尾,它将返回到第一个foreach,移动到第二个服务器上,然后遍历第二个服务器上的path列表,等等。 我见过类似的post,其他地方他们不使用第二个foreach,但我试过了,它不起作用,像这样: foreach ($server in $servers) {net use $server /USER:domain\username password {copy-item -Path $file -Destination $server$dest}}} 谢谢你的帮助,任何人都可以给我这个。 我确定这是一件非常简单的事情,我只是想念。

PowerShell – 找出谁有networking文件夹共享的读取权限

在Windows Server&Active Directory环境中,只有特定的AD用户/组共享特定的networking共享。 有没有办法,使用PowerShell,找出谁已经读取这个共享的权限? 我试图按照这篇文章的说明,但是收到一个错误,在代码示例之后显示如下。 这里是我用来试试这个示例的.ps1代码: $cred = Get-Credential -Credential mydomain\myself $share = "MyTarget" $cn = "FooBar" $query = "Associators of {win32_LogicalShareSecuritySetting='$share'} Where resultclass = win32_sid" Get-WmiObject -query $query -cn $cn -cred $cred | Select-Object -Property @{LABEL="User";EXPRESSION= {"{0}\{1}" -f $_.ReferencedDomainName, $_.AccountName}}, SID 这是错误消息: Get-WmiObject : Not found At line:8 char:1 + Get-WmiObject -query $query -cn […]

如何更改我无权访问的registry项的所有者?

当我将某些机器升级到Windows 10时,RuntimeBroker上的权限不正确导致问题,我遇到了一个奇怪的问题。 我在网上find了一个build议更改权限的解决scheme (首先在registry中,然后在DCOMconfiguration中),然后尝试编写一个Powershell脚本来自动执行该过程。 我试图执行下面的Powershell脚本,这应该(理论上)做我需要做的。 但是,在最后一个命令(Set-Acl)中,我得到一个SecurityException,说“请求的registry访问不被允许”。 $path = "Registry::HKEY_CLASSES_ROOT\AppID\{9CA88EE3-ACB7-47c8-AFC4-AB702511C276}"; $account = New-Object -TypeName System.Security.Principal.NTAccount -ArgumentList 'Administrators'; $acl = Get-Acl -Path $path; $acl.SetOwner($account); Set-Acl -Path $path -AclObject $acl; 目前,该registry项的所有者是NT SERVICE\TrustedInstaller ,我试图将其更改为Administrators 。 我已经运行Powershell的pipe理权限,但显然似乎并不足够…我的猜测是,我遇到了一些鸡和鸡蛋的问题在这里。 如果我使用regedit手动编辑该密钥的权限,我可以毫无问题地执行该操作。 这里的registry与我的脚本有什么不同? 我怎样才能做到这一点编程? 更新:按照briantist的build议,我尝试使用psexec作为SYSTEM运行这些命令。 我将上面公布的Powershell命令保存到我的桌面上的文件chowner.ps1中,然后运行以下命令: PsExec64.exe -accepteula -d -i -s powershell -ExecutionPolicy Bypass -File C:\Users\User\Desktop\chowner.ps1 不幸的是,我仍然得到相同的SecurityException消息。 我相信原因是因为甚至没有系统有权访问此特定的registry项; 请记住,TrustedInstaller拥有它。

Excel Powerlink在PowerShell中的性能问题

我们正在进行共享networking驱动器重组。 这将打破业务使用的数百个Excel文件中的链接。 为了减轻打击,我创build了一个自动重新链接这些文件的Powershell脚本。 但是,它的运行速度只有每分钟大约1MB。 这将需要几个月的时间来重新链接所有的Excel文件。 现在,我要求企业限制他们请求重新链接的数据量,但是,我可以让我的脚本运行的越快,企业就越快乐。 目前它function完善,速度很慢。 有没有人有任何build议,我可以如何加快这个Powershell脚本? 对于任何反馈,我们都表示感谢。 $object = New-Object -comObject Shell.Application $folder = $object.BrowseForFolder(0, 'Select the folder where your Excel files are located', 0) $oldname = "oldname" $newname = "newname" if (!$folder -or !$oldname -or !$newname) {exit} $excel = New-Object -comObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false foreach ($file in Get-ChildItem […]

取AD组和成员在其中

我发现一个脚本来获取AD组及其成员。 我工作正常,但突然停止工作,并给出了一个错误。 在Win2008r2中使用PowerShell列出所有组及其成员 $Groups = Get-ADGroup -Properties * -Filter * -SearchBase "OU=Groups,DC=corp,DC=ourcompany,DC=Com" Foreach($G In $Groups) { Write-Host $G.Name Write-Host "————-" $G.Members } 错误 Get-ADGroup : The supplied distinguishedName must belong to one of the following partition(s): 'DC=AIA,DC=BIZ , CN=Configuration,DC=AIA,DC=BIZ , CN=Schema,CN=Configuration,DC=AIA,DC=BIZ , DC=ForestDnsZon es,DC=AIA,DC=BIZ , DC=DomainDnsZones,DC=AIA,DC=BIZ'. At C:\Users\zai_shanda\Desktop\adgroup.ps1:1 char:22 + $Groups = Get-ADGroup <<<< -Properties […]

Windows服务器上电源的识别

首先,我不确定这是否是正确的forms,但似乎是最合适的。 对于一个pipe理自动化项目,我试图找出在我的networking上的服务器上的电源单元。 目前,我正在使用PowerShell脚本执行此操作。 我曾尝试使用Get-WmiObject类CIM_PowerSupply,CIM_UninturruptiblePowerSupply和Win32_Battery,但每个返回一个空的集合。 对于这些命令,这种行为是否正常?如果是这样,是否有任何其他接口暴露在查询此硬件?

即使一旦完成,powershell计划任务总是显示正在运行

我有一个PowerShell脚本设置为每天作为一个计划的任务运行,它设置了以下操作:运行程序PowerShell.exe参数:-executionpolicy bypass -file D:\ Scripts \ SomeScript.ps1 脚本成功完成,并在任务pipe理器中,我可以看到PowerShell启动然后closures,但任务计划程序仍然显示它正在运行。 对于如何解决这个问题,有任何的build议吗?