标签: powershell

删除所有邮箱的 Exchange 2010 自动映射的脚本

我有一台 Exchange 2010 SP3 服务器,它从 MSExchangeIS 获取应用程序事件错误 9646:

Mapi 会话 [ID] [AD 用户] 超过了“objtFolder”类型的最大 500 个对象

对此进行调查,发现原因是几个用户对其他人的邮箱拥有大量完全访问权限。

由于这种方式在 SP1 中发生了变化,请参阅此处的 Technet 文章,他们现在会自动打开他们有权访问的所有用户,而不是仅在需要时才能够添加或打开它们。

理想情况下,我想要一个脚本,我可以运行它来全局删除所有用户的 -Automapping $true 字符串:这应该让他们在需要时访问邮箱,但阻止它自动打开,占用 MAPI 会话。

我从上面的 URL 尝试了 Microsoft Technet 脚本,但这似乎没有按预期工作:

[PS]$FixAutoMapping = Get-MailboxPermission sharedmailbox|where {$_AccessRights -eq "FullAccess" -and $_IsInherited -eq $false}
The operation couldn't be performed because object sharedmailbox couldn't be found on '[Servername]'.
    + CategoryInfo          : InvalidData: (:) [Get-MailboxPermission], ManagementObjectNotFoundException
+ FullyQualifiedErrorId : B485A4C7,Microsoft.Exchange.Management.RecipientTasks.GetMailboxPermission
Run Code Online (Sandbox Code Playgroud)

我假设 sharedmailbox 是一个在我的服务器上不存在的特定示例邮箱:我需要一个脚本来搜索所有邮箱,然后将 Automapping $true 更改为 Automapping $false 以获取对邮箱的任何访问权限。 …

powershell exchange exchange-2010 outlook-2007 outlook-2010

5
推荐指数
1
解决办法
6931
查看次数

获取 AD 组成员 - 不同域

我的任务是导出几个 AD 组的成员.csv,我过去总是使用Get-ADGroupMemberpowershell 中的命令导出这些组的成员,指定组名称,选择我需要的属性,然后使用export-csv.
我似乎遇到了一个组的问题,尽管这似乎与 AD 组的成员属于不同林中的外部域这一事实有关。本质上我运行下面的命令,但输出文件显示为空白。

Get-ADGroupMember -identity "VPN Users" | select name | Export-csv -path c:\vpnuserslist.csv -NoTypeInformation 
Run Code Online (Sandbox Code Playgroud)

输出如下:

PS C:\Windows> Get-ADGroupMember -identity "VPN Users" | select name | Export-Csv -Path c:\vpnuserstest.csv -NoTypeInformation

Get-ADGroupMember : The operation completed successfully

At line:1 char:18

+ Get-ADGroupMember <<<<  -identity "VPN Users" | select name | Export-Csv -Path c:\vpnuserstest.csv -NoTypeInformation
    + CategoryInfo          : NotSpecified: (VPN Users:ADGroup) [Get-ADGroupMember], ADException
    + FullyQualifiedErrorId : The operation completed successfully,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember
Run Code Online (Sandbox Code Playgroud)

我还注意到,当转到 Active …

powershell active-directory powershell-v3.0 powershell-v4.0

5
推荐指数
1
解决办法
2万
查看次数

检查服务帐号是否具有登录交互权限

我想循环遍历我的所有域服务帐户,并确保人们无法使用该帐户登录服务器。

如何检查服务帐户是否具有交互式登录权限和/或远程登录权限?

它们不是托管服务帐户,因为它们在多个服务器上用作服务帐户。

我尝试过gpresult /s myservername /user myusername /h gpreport.html,但我不太理解该报告。

有一个部分包含:

Security Group Membership when Group Policy was applied

MYDOMAIN\Domain Users
Everyone
BUILTIN\Users
BUILTIN\Administrators
NT AUTHORITY\REMOTE INTERACTIVE LOGON
NT AUTHORITY\INTERACTIVE
Run Code Online (Sandbox Code Playgroud)

最后两个是允许该用户登录服务器的吗?

或者是否有我可以使用命令行检查和查找的组策略?

powershell active-directory

5
推荐指数
1
解决办法
4万
查看次数

如何在 xWebApplication DSC 资源中使用 AuthenticationInfo

我的 DSC 配置中有以下内容:

        xWebApplication StaffDirectoryApp {
            Website = "MySite"
            Name = "MyApp"
            WebAppPool = "MyPool"
            PhysicalPath = $Destination
            Ensure = "Present"
            PreloadEnabled = $true
        }
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但我还想使用 AuthenticationInfo 属性(尽管文档似乎说它应该是 AuthenticationInformation,但事实并非如此)。

我能找到的唯一例子是 GitHub 上的一个单元测试,它们的用法是这样的:

AuthenticationInfo = New-CimInstance -ClassName MSFT_xWebApplicationAuthenticationInformation `
                        -ClientOnly `
                        -Property @{ Anonymous = $false; Basic = $false; Digest = $false; Windows = $true }
Run Code Online (Sandbox Code Playgroud)

然而,这会产生以下结果:

Convert property 'AuthenticationInfo' value from type 'STRING' to type 'INSTANCE' failed
Run Code Online (Sandbox Code Playgroud)

我应该如何设置这个属性?

powershell dsc

5
推荐指数
1
解决办法
682
查看次数

OpenSSH 的公钥认证 Windows 端口

我一直在尝试在运行 Windows Server 2012 R2 的 VM 上使用OpenSSH的PowerShell 端口进行公钥身份验证。

我忠实地遵循了安装说明,并确保我的文件权限对于.ssh\authorized_keys. (无法在 Win32-OpenSSH wiki 中发布特定说明的链接,因为我太少,无法发布两个以上的链接,请参阅下面的评论)。

我可以使用用户名/密码按预期从 linux 主机登录到 windows 主机。然而,密钥认证不走运。

本地(linux 主机)配置

我的本地 .ssh/config文件包含:

Host remotehostname
    HostName remotehostname
    User remoteuser
    Port 22
    IdentityFile /home/myusername/.ssh/id_dsa
Run Code Online (Sandbox Code Playgroud)

本地.ssh目录中的权限显示正确:

[me@localhost.ssh]$ ls -ltrh
total 56K
-rw------- 1 cengadmin cengadmin 1.6K Sep 11 10:01 known_hosts
-r-------- 1 cengadmin cengadmin  672 Sep 11 10:06 id_dsa
-r-------- 1 cengadmin cengadmin  580 Sep 11 10:13 config
Run Code Online (Sandbox Code Playgroud)

远程(windows 主机)配置 …

powershell ssh known-hosts windows-server-2012-r2

5
推荐指数
1
解决办法
9055
查看次数

未加载指定的模块“MSOnline”,因为在任何模块目录中都找不到有效的模块文件

对于我的一个应用程序,我有一个 Windows 服务(在 Windows Server 2012 R2 x64 上),它的作用是在不同的计划和触发器上执行许多作业。其中之一是在 Office 365 上重置用户密码。运行该服务的服务器安装了 Microsoft Online Services 登录助手和用于 Windows PowerShell 的 Microsoft Azure Active Directory 模块(MSOnline 版本 1.1.166.0)。

从 PowerShell 我可以成功地与我的用户调用以下内容。

$> $cred = Get-Credential
$> Connect-MsolService -Credential $cred
Run Code Online (Sandbox Code Playgroud)

如果我以帐户身份运行 PowerShell,我的服务启动时也能正常运行。从 Windows 服务运行重置密码功能失败并显示以下消息:

The term 'Connect-MsolService' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. …
Run Code Online (Sandbox Code Playgroud)

powershell .net azure microsoft-office-365 azure-active-directory

5
推荐指数
1
解决办法
2万
查看次数

如何使用挂载点对卷进行碎片整理?

我正在尝试通过优化卷 cmdlet 对卷进行碎片整理。我已经通过了挂载点路径。但它失败如下。

PS C:\Users\Administrator> Optimize-Volume -Path C:\Testvol1\disk
Optimize-Volume : No MSFT_Volume objects found with property 'Path' equal to 'C:\Testvol1\disk'.  Verify the value of the property and retry.
At line:1 char:1
+ Optimize-Volume -Path C:\Testvol1\disk
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Testvol1\disk:String) [Optimize-Volume], CimJobException
    + FullyQualifiedErrorId : CmdletizationQuery_NotFound_Path,Optimize-Volume
Run Code Online (Sandbox Code Playgroud)

如何传递Optimize-volume的路径?或者有没有其他方法可以使用可用的 mounthpath 进行碎片整理?

powershell defrag diskmanagement powershell-v3.0

5
推荐指数
1
解决办法
763
查看次数

列出没有远程服务器管理工​​具 (RSAT) 的 Windows 域计算机

我想检索属于我的 Windows 7 工作站所属的 Windows 域的计算机列表。

我想在几乎不需要额外安装的情况下实现这一点,尤其是 Microsoft 提供的 230MB 远程服务器管理工​​具包。

到目前为止,我看到的选项包括 DSQuery 工具(RSAT 包的一部分)和 PowerShell 的 ActiveDirectory 模块(也是 RSAT 包的一部分)。

  • 是否可以选择单独使用 PowerShell 模块(仅限脚本),或者是否真的需要 230MB 工具集的每一点?
  • 我错过了另一个选择吗?

关于将执行查询的用户的权限,我希望能够使用非特权域用户,但如果没有非特权替代方案,管理员也是一个选项。

我还将提到该net view命令显示同一子网中或工作站“附近”的几台计算机,但显然不是域中的所有计算机。另一方面,该命令不net view /domain:<domain_name>显示任何结果,并返回错误 6118(这很奇怪,因为我希望net view也不会显示任何结果)。

windows powershell active-directory domain dsquery

5
推荐指数
1
解决办法
509
查看次数

会影响复制速度的服务器操作系统或 PowerShell 版本差异?

我最近在 2 个不同的位置移动了很多很多文件。它是完全相同的数据集,使用相同的 robocopy 命令,但在我们总部的 Windows Server 2012 R2 上花费不到 30 分钟(使用 PowerShell v4)在 Windows Server 2008 R2 SP 1(PowerShell v2)上花费了大约 15 小时) 在我们 ISP 的服务器中心。两台服务器中的后者实际上有更多的 RAM 和 CPU(实际上是后者的两倍:512 GB 内存,64 核)。

两个任务之间唯一的另一个明显的硬件差异(对我而言)是在 2012 服务器上我将数据从本地磁盘移动到 SAN 卷,而在 2008 R2 服务器上它是跨 SAN(从 LUN 到 LUN)。我不认为这是罪魁祸首,因为源卷和目标卷之间的 iSCSI 带宽在每台机器上都是相同的。

也许我遗漏了一些东西,所以我想把它放在这里,看看你们都有什么见解。

powershell robocopy file-transfer windows-server-2008-r2 windows-server-2012-r2

5
推荐指数
1
解决办法
96
查看次数

Get-TlsCipherSuite Output 中 Protocols 字段的值是什么意思?

Powershell 有一个Get-TlsCipherSutecmdlet,可返回有关 TLS 可以使用哪些密码的信息。

输出包括一个Protocols似乎被设置为数字数组的字段,例如:

PS C:\>Get-TlsCipherSuite -Name "AES"
KeyType               : 0
Certificate           : ECDSA
MaximumExchangeLength : 65536
MinimumExchangeLength : 0
Exchange              : ECDH
HashLength            : 0
Hash                  :
CipherBlockLength     : 16
CipherLength          : 256
BaseCipherSuite       : 49196
CipherSuite           : 49196
Cipher                : AES
Name                  : TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
Protocols             : {771, 65277}
Run Code Online (Sandbox Code Playgroud)

Protocols作为每个密码套件(例如,771和652677)的字段值的数字的含义是什么?

注意:如果您去探索,请注意此命令的输出似乎与 不符select,请参阅https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/16511008-get-tlsciphersuite-does-not -输出-表现良好-ob

windows powershell ssl

5
推荐指数
1
解决办法
2749
查看次数