Articles of PowerShell

不能在New-MoveRequest中使用UPN凭据?

我们正在进行混合设置(Exchange 2013 on-prem),并且MRSproxy已启用并正在运行。 我们希望在离开公司时将用户的邮箱归档。 所以我们希望将这些邮箱从Office 365迁移回我们的内部服务器。 我一直在试图创build一个离开的脚本,并且New-MoveRequest cmdlet不断给出以下错误: The Mailbox Replication Service was unable to connect to the remote server using the credentials provided. Please check the credentials and try again. The call to 'https://webmail.blah.com/EWS/mrsproxy.svc' failed. Error details: The HTTP request is unauthorized with client authentication scheme 'Negotiate'. The authentication header received from the server […]

自动发送“欢迎”电子邮件给所有新的用户帐户

我有Windows Server 2008 R2企业版x64上的Exchange Server 2010企业版。我的问题; 我正在尝试在http://www.ucblogs.net/blogs/exchange/archive/2010/03/23/Automatically-sending-a-_2700_Welcome_2700_-email-to-all-new-user-accounts上进行设置。 aspx它不起作用。另外,在使用powershell脚本时,它给了我以下结果 (New-ReceiveConnector -Name "Internal Relay" -Bindings 0.0.0.0:25 -RemoteIPRanges 127.0.0.1 -AuthMechanism None -Enabled $true -Fqdn "myserver.mydomain.com" -PermissionGroups AnonymousUsers -Server mysever | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "ms-Exch-SMTP-Accept-Any-Recipient") Identity User Deny Inherited AAAa\bbb NT AUTHORITY\ANON… False False 在上面的命令中,“扩展权限”没有任何信息。 有什么build议么? $strScriptName = $MyInvocation.MyCommand.Name if (!(Get-ItemProperty HKLM:\Software\Innervation\$strScriptName -Name LastRun -EA SilentlyContinue)){ […]

Powershell 2:如何从ASCII文本的主体中剥离特定的字符

我正在尝试使用PowerShell去除string中的奇怪字符。 我用下面的输出来尝试自己学习: get-help about_regular_expressions 我想要一个string,主要是ASCII,但有一个exception字符,需要删除。 (注册的商标符号; R围着一个圆圈。)我想从string中去除任何出现的字符,所有的东西都保持不变。 什么是使用PowerShell 2.0完成这个干净的expression? [编辑] 我做了一些进一步的挖掘,我相信这个问题是源于我正在使用的Import-CSV调用。 当我从记事本中将此符号剪切并粘贴到PS提示符中,并将其分配给一个string时,我就可以很好地匹配: # This code yields 'True' $string -match "\u00ae" 但是,当我在一个CSV文件中使用Import-CSV,其中一个字段包含特殊符号时,我相信原始字节正在转换,因为执行这样的操作不起作用: # This code yields 'False' $source = Import-CSV -path testing.csv # The following extracts the entry / line containing the special symbol that was # copy-and-pasted above $culprit = $source[5].COMMITTEE_NAME $culprit -match "\u00ae" 但是,下面的工作: […]

Powershell 2和Exchange:查找冲突的对象

我是新来的PowerShell和交stream,所以容易对我来说,如果这听起来令人困惑。 我需要在我们的环境(成千上万)中生成每个可能的电子邮件地址的列表,这将导致下面的代码出错,这是因为已经存在该对象的电子邮件地址作为其关键属性之一: New-MailContact -Name $email ` -ExternalEmailAddress $email > $null 我已经尝试迭代从get-mailcontact返回的所有条目,从“EmailAddresses”集合存储每个电子邮件地址,但现在我相信我也需要从用户对象中提取所有可能的电子邮件地址。 我已经到了我认为有一个更简单,可能是一次性的方式来做到这一点。 PS 2中最简单的方法是什么? 有没有办法保证,如果列表中的电子邮件地址,New-MailContact将失败,并有重复的错误,如果电子邮件地址不在列表中,那么我们保证New-MailContact不会产生错误由于重复。 (它可能会产生其他错误,但不是因为一个对象已经与这个地址相关联。) 谢谢!

Exchange的New-MailboxExportRequest对于ContentFilter的DateTime参数performance奇怪

我正试图从邮箱中提取某个date范围的电子邮件到PST,但使用ContentFilter的DateTime参数似乎没有按预期方式工作。 这应该导出过去5天的所有内容: $endDate = Get-Date "00:00:00" $startDate = $endDate.AddDays(-5) Write-Host "Exporting items between $startDate and $endDate…" New-MailboxExportRequest -ContentFilter {(Received -ge $startDate) -and (Received -lt $endDate)} -Mailbox "EmailLog" -FilePath "\\ReadyNAS\backup\Mailboxes\EmailLog\EmailLog.pst" 但是,PST最终会在邮箱的全部15 + Gb之内。 如果我手动指定date,它工作正常: New-MailboxExportRequest -ContentFilter {(Received -ge "01-06-2013 00:00:00") -and (Received -lt "06-06-2013 00:00:00")} -Mailbox "EmailLog" -FilePath "\\ReadyNAS\backup\Mailboxes\EmailLog\EmailLog-man.pst" 我不确定这是否是由于某种区域设置的冲突,但我会认为传递一个types化的参数将避免这种愚蠢。 我怀疑这是因为如果我打印出date(第一个例子中的写主机)date以美国格式出现: [PS] C:\Windows\system32>Write-Host "Exporting items between […]

当由Start-Process Cmdlet调用时,批处理脚本不会执行

我在Windows Server 2012 R2上遇到了一个奇怪的问题,对我来说根本没有任何意义。 我有一个基本上具有以下结构的PowerShell脚本: Function Something-Different { […] } Function Start-Some-Batch { Start-Process "K:\Path\To\Batch.cmd" } Function Something-Else { […] } Something-Different Start-Some-Batch Something-Else 但batch fileK:\Path\To\Batch.cmd永远不会被执行! 一些更多的信息和事实: 所有操作都使用相同的域用户执行 PowerShell版本是4.0 在Windows资源pipe理器中双击该batch file时,可以不出现任何问题 PowerShell脚本不提供任何错误输出 直接从PowerShell控制台执行Start-Process "K:\Path\To\Batch.cmd"也不会提供任何输出,也不会启动批处理脚本 执行后$error[0]为空 Something-Else函数执行得很好(这意味着Start-Some-Batch不会阻止PS脚本完成其执行) 运行提升的PowerShell脚本不会改变一件事情 从cmd.exe提示调用批处理脚本也不会启动它(提升或不提升) 我怀疑通过组策略的任何一百个Security Settings 什么会导致这样一个奇怪的行为? 我在这里没有想法了。

如果查询解决策略包含客户端子网的网元操作员,则DNS策略不能正确parsing区域范围中的CNAME

我相当肯定我发现了一个错误,但是我正在试着理解它,也许会得到一个理智的检查。 脚本 一个策略, 如果请求正在查找特定的loggingAND并且客户端IP不在特定的子网中,则策略匹配并生成一个CNAMElogging,其目标不在策略中,并且不在策略中 。 例: Zone = example.com example.comlogging默认范围: testme IN A 10.1.2.3 testOther IN A 10.11.11.11 区域范围= TesterScope logging在TesterScope : testme IN CNAME testOther.example.com. 客户端子网MySubnet包含10.8.8.0/24 带EQ的客户端子网QRP 使用以下configuration查询parsing策略MyQRP : 条件= And 内容= TesterScope 标准: FQDN = EQ,testme.example.com. ClientSubnet = EQ,MySubnet 这会产生预期的结果,即: 如果来自testme.example.com中的IP的MySubnet ( 应该匹配 ),即使必须在默认范围内parsingCNAME ,它也会正确地返回(并parsing) CNAMElogging(QRP专门只应该当FQDN是testme.example.com不匹配testOther.example.com )。 所以结果是10.11.11.11 ,这是正确的 。 如果来自testme.example.com之外的IP的MySubnet ( 不应该匹配 […]

Powershell 2.0 Windows Server 2008 SP2更新不适用于您的系统

我正试图在Windows Server 2008 SP2盒子上安装Powershell 2.0。 根据微软的下载页面,我需要KB968930-x86.msu。 我已经下载了,但是当我尝试安装它,我得到“更新不适用于您的系统”。 有人可以让我知道哪些文件,我需要下载Powershell 2.0在32位Server 2008 SP2? 谢谢

使用powershell脚本在Windows 7上清除打印驱动程序caching

[背景] 我们一直有networking客户端突然无法打印的麻烦。 他们得到一个hex代码奇怪的错误。 我们确定驱动程序中的某些东西已经搞乱了,我们可以通过清除驱动程序caching并重新安装驱动程序来解决问题。 每隔一段时间,随机电脑就会发生这种情况 我们假设这是最新的戴尔2330dn驱动程序的错误,因为这是唯一有这个问题的机型。 [问题] 我们要做的是写一个Powershell脚本来清​​除驱动程序caching并重新下载驱动程序。 我看到大量的脚本来pipe理队列,服务器和端口,但本地驱动程序cachingpipe理没有任何帮助。 [当前解决方法] 由于我们必须手动执行此操作,因此我将写出步骤,以便您知道我们希望此脚本复制的内容。 禁用后台打印程序 重新启动机器 删除内容:C:\ windows \ system32 \ spool \ drivers \ w32x86 启用后台打印程序并启动服务。 删除networking打印机对象,并从服务器重新添加networking打印机。 [请求] 我已经足够好了,可以将上面的解决方法转换成一对脚本。 我想找一个更优雅的解决scheme,然后我目前的解决方法。 有什么build议么?

如何使用PowerShell在具有pipe理权限的远程计算机上运行命令

如何使用PowerShell在具有pipe理员权限的远程计算机上运行命令(例如:以pipe理员身份运行)。 到目前为止,我尝试过 start-process powershell.exe -verb runas -argumentlists ".\test.ps1" 这是失败的。