Articles of PowerShell

除非先前从浏览器访问,否则HTTPS地址/域的cUrl超时

我已经失去了几天这个问题,希望它激发了一个人的想法。 我使用Powershell脚本将几个系统集成在一起。 我连接到的两个服务(托pipe的JIRA)中的一个可以从我的本地系统访问,但是从我的一个虚拟机运行时脚本会失败。 我偶然发现,如果我在服务器上为该主机的HTTPS URL打开/刷新了一个浏览器,那么脚本将能够通过HTTPS访问API约20-30秒。 当我远程进入服务器并从PowerShell控制台尝试此操作时收到超时错误。 然后我validation了与cUrl(详细输出如下)一样的行为。 刷新具有该域的浏览器,然后允许在短时间内访问HTTPS URL。 在SSL协商之前,似乎是在初始连接上超时。 代表PoSH命令: Invoke-RestMethod -Method Get -Uri“ https://MYDOMAIN.atlassian.net/rest/api/2/issue/PLPT-1?fields=key,id,status ”-Headers @ {“Authorization”=“Basic” + [System.Convert] :: ToBase64String([System.Text.Encoding] :: UTF8.GetBytes('USERNAME:PASSWORD'))} 代表cUrl命令: curl.exe“ https://MYDOMAIN.atlassian.net/rest/api/2/issue/PLPT-1?fields=key,id,status ”-u“USERNAME:PASSWORD”-v -X GET 我已经做了很多挖掘,我很难过。 我尝试过使用Wireshark进行更深入的挖掘,但是使用数据包嗅探器已经有好几年了,而且我很生疏,不得不学习UI。 故障排除: 以下是我在尝试隔离问题时所能想到的问题/答案: 它是PowerShell? 使用cUrl也会超时 这一切都是HTTPS? https://google.com/正常工作没有超时 https://localhost/…没有超时工作正常 这是一个通过浏览器访问过JIRA的系统吗? 我证实我的家庭桌面可以通过PoSH连接,尽pipe从来没有访问过JIRA 它是主机,DC还是OS? 这是Azure中的2008 R2 VM,我validation了PoSH和cUrl命令在运行2008 R2的第二个Azure VM中正常工作 防火墙,防病毒? 禁用防病毒和防火墙,cUrl + PoSH仍然超时 用户代理? 包括用户代理在问题系统或工作系统上并没有什么不同 小提琴手说什么? […]

如何对Windows 2008 R2服务器上的msmq存储位置进行脚本更改

有没有通过批处理或PowerShell脚本做到这一点? 我正在寻找一种方法来设置几个新的服务器。 我在这个主题上发现的唯一的东西让我相信你不能:从: http : //technet.microsoft.com/en-us/library/cc785060.aspx 只能使用计算机pipe理,服务和应用程序,消息队列属性中的“存储”选项卡来修改消息存储位置。 编辑 – 我也发现这篇文章。 它列出了一些registry值,但是又build议反对它http://blogs.msdn.com/b/johnbreakwell/archive/2009/02/09/changing-the-msmq-storage-location.aspx

使用Powershell将多个用户从一个组添加到一个Active Directory组

我有一个PowerShell脚本,应该通过一个特定的ou并将组存储到一个variables$组。 这里是我在脚本中使用的代码: $Groups = Get-ADGroup -Properties * -Filter * -SearchBase "OU=GFS-USERS,OU=AFS-OU-Groups,OU=AFS,OU=FA,OU=DEPARTMENTS,DC=ou,DC=ad3,DC=blabla,DC=com" -Server "ou.ad3.blabla.com" Foreach($G In $Groups) { Write-Host $G.Name Write-Host "————-" $G.Members } 这一步似乎工作正常。 在我的脚本的下一部分,我已经通过每个组,并尝试将来自每个组的用户添加到一个组中,他们应该被合并。 代码如下: foreach ($group in $groups) { Add-ADGroupMember -Identity "CN=test,OU=AFS-OU-ACLs-EDMS,OU=AFS-OU-Groups,OU=AFS,OU=FA,OU=DEPARTMENTS,DC=ou,DC=ad3,DC=blabla,DC=com" -Members (Get-ADGroupMember $group) -Server "ou.ad3.blabla.com" } 当我运行这个脚本时,它对所有来自以下用户 OU=AFS,OU=FA,OU=DEPARTMENTS,DC=ou,DC=ad3,DC=blabla,DC=com 但对于所有其他用户,我收到以下错误: Add-ADGroupMember : The server is unwilling to process the request At line:1 […]

识别具有损坏的邮箱Exchange 2013

我们正在准备摆脱Exchange本地化,并正在从外包托pipe服务提供商迁移到Office 365。我们正在运行完全修补版本的Exchange 2013,在Server 2012上,也完全修补。 在迁移testing邮箱的过程中,我们发现跨多个数据库的许多邮箱都已损坏。 有关原因的更多信息可以在这里find。 从本质上讲,存储我们的Exchange虚拟机的SAN超额订阅,并经常有I / O等待超过5秒,持续读取速度很less通过500KBps。 缓慢的速度足以在迁移过程中浪费大量时间,但遇到损坏的邮箱时,将1GB数据从2-3小时迁移到10-20小时。 每个有问题的邮箱(到目前为止我已经find)在对get-mailboxstatistics进行检查时会给出类似于以下的邮件: WARNING: The object <GUID> has been corrupted, and it's in an inconsistent state. The following validation errors happened: WARNING: Cannot extract the property value of 'DeletedItemCount'. Source: PropTag(DeletedMsgCount), PropType(Int), RawValue(-2), RawValueType(System.Int32). Target: Type(System.Nullable`1[System.UInt32]), IsMultiValued(False). Error Details: <n/a> 针对所有数据库运行新邮箱修复请求确定了一些损坏并修复了它,但不是全部。 我似乎无法find一种方法来获取get-mailboxstatisticslogging每个这些邮箱中有东西被破坏的事实,但我确信有一个。 将邮箱从一个数据库移动到另一个似乎解决了这个问题。 我们有大约50个数据库,每个数据库大约有50个用户,所以手动完成。 我想要做的是通过PowerShell(请原谅懒惰的伪代码): foreach ($mailbox […]

远程Powershell脚本计划任务

我无法将Powershell脚本作为计划任务运行。 该脚本远程login到两台Hyper-V主机,查询复制状态并将结果通过电子邮件发回给我。 当我手动运行它时,脚本可以正常运行,无论是在Powershell ISE中,还是通过直接运行脚本,但是当我将它作为计划任务运行时,任务会停留在运行状态,我从来没有得到结果。 我已经检查了我的计划任务安装程序正常工作,只需将文本文件写入本地文件夹即可。 我也以同样的用户身份login,当我手动运行脚本的时候运行任务,所以没有,我错过了什么? 这是我的脚本: $array = @("host1.domain.com", "host2.domain.com") for ($i=0; $i -lt $array.length; $i++) { $pass = cat C:\Scripts\Creds.txt | convertto-securestring $mycred = new-object -typename System.Management.Automation.PSCredential -argumentlist "username",$pass Invoke-Command -ComputerName $array[$i] -Credential $mycred -FilePath "C:\Scripts\Check_VMReplication.ps1" } 该脚本在相同的文件夹中调用另一个脚本: $hstname = Hostname $Replication = Get-VMReplication $MessageFail = $hstname + ' Replication Alert' $SmtpServer = […]

Exchange Online Powershell Dynamic Dist。 联系人列表

我们有与Exchange 365联机的Exchange。我正在尝试设置外部邮件联系人的dynamic通讯组列表,如果他们的地址包含某个电子邮件域。 我已经尝试下面的PowerShell脚本(以及WindowsEmailAddress和EmailAddresses属性,而不是外部),但不能得到它的工作。 任何人都知道我可以做到这一点? 使用Exchange Online,必须在Powershell中完成。 Set-DynamicDistributionGroup -Identity "Test Group" -RecipientFilter {((RecipientType -eq 'MailContact') -and -(ExternalEmailAddress -like '@example.com'))} 从我可以告诉,电子邮件地址filter似乎并没有工作。 该域名是绝对正确的。 是否有一个属性可以检查邮件联系人的电子邮件地址?

当虚拟交换机端口处于中继模式时,Hyper-V guest虚拟机将失去networking访问权限

我在运行Hyper-V的Windows Server 2012 R2计算机上有访客虚拟机。 目前,guest虚拟机正在使用本地vlan(vlan ID 1)。 我可以从主机和networking与客人交stream。 但是,客户端是Zebra / Motorola VX9000 wlan控制器,也需要处理vlan ID 10和15上的stream量。主机使用的交换机端口在vlan 1上未标记,并且我更新了端口以在vlans上进行标记10和15.我也通过powershell发出以下命令: Set-VMNetworkAdapterVlan -VMName MyGuest -Trunk -AllowedVlanIdList "10,15" -NativeVlanId 1 不幸的是,在执行这个命令之后,我失去了和客人沟通的能力。 如果为guest虚拟机打开Hyper-V控制台,则它没有任何networking访问权限。 试图从主机或networking上的其他位置ping来宾会导致Destination host unreachable消息。 我可以通过将适配器返回到无标记模式来“修复”它: Set-VMNetworkAdapterVlan -VMName MyGuest -Untagged 现在我可以再次与客人沟通,但这并不能解决任何问题。 我仍然需要这个客人能够处理10号和15号航class的交通。 我不明白为什么会发生这种情况。 在切换到中继模式之前,无标记的数据包是vlan ID 1。 现在不应该这样吗? 我怎样才能让这个客人在我需要的所有虚拟世界中交stream? 我从错误信息中得到的最好的结果是ping的时候看到的是类似于没有路由的情况。 将端口设置为中继(可能位于主机上)之后,是否需要单独发出命令来为这些networking创build路由?

使用CimObjectconfigurationRelayIPList会中断Windows SMTP服务器

我正在尝试使用PowerShellconfigurationWindows Server 2012 SMTP服务器。 我探讨了使用IISSmtpServerSettings CimObject。 我得到的对象,应用我的更改(允许本地主机转发发件人列表)和脚本退出没有错误。 但是,现在我无法启动SMTP服务器。 在我更改之前和之后仔细检查了Cim对象之后,我的SecureBindings设置也发生了变化。 从此:SecureBindings:{SecureBinding(IP =“”,Port)} 对此:SecureBindings:{SecureBinding(IP =“”,Port =“”)} 我试图设置我的SecureBindings设置,但我得到一个错误“适配器不能设置属性的值”SecureBindings“ 所以,我的问题是,我怎么能 阻止我的脚本首先影响SecureBindings 将SecureBindings设置为不会导致SMTP服务器启动失败的值 我的脚本如下所示: $ErrorActionPreference = "Stop" $error.Clear() # Get Cim object $smtpInstance = Get-CimInstance -Namespace root/MicrosoftIISv2 -ClassName IIsSmtpServerSetting -Filter "Name = 'SmtpSvc/1'" # Set relay IP of 127.0.0.1 $relayIPs = @( 24, 0, 0, 128, 32, 0, 0, 128, […]

通过Powershell重命名VPN连接

我正在尝试批量重命名我的Windows 8.1机器上的VPN连接。 我没有用Set-VpnConnection修改服务器地址Set-VpnConnection ,但我找不到重命名VPN连接的方法: 首先,没有Rename-VpnConnection cmdlet,我不知道如何使Rename-Item与Vpn Connection对象一起工作(如果它能工作的话)。 其次,我尝试使用ServerAddress而不是Name来识别一个vpn连接,但是powershell告诉我这是不允许的。 然后,我尝试在-Name参数之后直接添加新的名称,如下所示: Set-VpnConnection -Name "MyVPN" "New Name to MyVPN" Powershell默默无误地运行命令,但根本没有生效。 请让我知道,如果这是可能的Powershell,如果没有,任何其他编程方式来做到这一点? 谢谢!

Windows Server防火墙跟踪连接状态

我试图通过使用PowerShell命令来控制Windows Server 2012(R2)防火墙(请参阅https://technet.microsoft.com/en-us/library/hh831755.aspx#BKMK_ProfileGlobalDefaults例如和参考)。 在我的Linux机器上,我能够使用conntrack IPTables的连接状态,以便能够build立和相关的连接( http://www.iptables.info/en/connection-state.html )。 我还没有在Windows防火墙中find相应的东西。 有没有办法在Windows Server使用PowerShell做到这一点? 我在互联网上search,没有发现任何相关的。