Articles of PowerShell

powershell与GPO进行安装,configuration和维护

我的问题是关于使用PowerShell脚本在2008R2域中安装,configuration,更新和维护Windows 7 Pro / Ent工作站,而不是使用GPO / ADMX / msi。 情况如下: 由于喜剧累积的企业碰撞,我们突然发现自己必须在很短的时间内和交付时间表上devise,configuration和部署完整的Windows Server 2008 R2和Windows 7 Pro / Enterprise。 当然,我不是一个Windows专家,我们人手不够,我们的stream行词宾果包括“自动化”和“一键”和“它需要正常工作”。 (FWIW,我从DEC开始,然后到solaris和cisco,然后是现在各种风格的linux,只有一些BSD,我用Windows来填写表格)。 所以我们决定引进一个承包商为我们做这个。 他们达到了最后期限。 系统已经启动,大部分都可以使用,而且这很好。 我们无法做到这一点。 但是现在被certificate是PIMA的“主要”部分,而且我必须学习微软的东西,直到/如果我们能够与这些人签订新的合同来进行持续的运营。 这是我的问题。 承包商几乎专门用于部署,configuration和更新。 上周我的精读内容让我认为部署,configuration和更新微软公司的普遍接受的做法使用了GPO和ADMX模板的元素,以及一些第三方的东西,比如PolicyPak。 有没有坚实的理由,我还没有发现,PowerShell脚本将优于GPO方法? 当他回来休假的时候,我会和承包商的负责人讨论这个问题,他会直接和我一起(我也不认为他们是这样做的)。 但是我也可以看到这可能是一个宗教问题,所以我仍然想要一些背景。 思考? 或网站链接? 谢谢!

为什么使用Powershell get-winevent获取未经授权的错误?

我是一个域pipe理员等效,我已经尝试在提升的控制台中运行(右键单击>以pipe理员身份运行),我一直执行时出现错误 get-winevent -logname application | where {$_.message -match "Faulting application"} | ` select TimeCreated,message 那么,我会得到三行结果 Get-WinEvent : Attempted to perform an unauthorized operation. At line:1 char:13 Get-WinEvent : Attempted to perform an unauthorized operation. + CategoryInfo : NotSpecified: (:) [Get-WinEvent], UnauthorizedAccessException + FullyQualifiedErrorId : Attempted to perform an unauthorized operation.,Microsoft.PowerShell.Commands.GetWinEventCommand 这似乎是一个新的发展,从来没有得到过这些错误。 这是一致的 – 如果我用另一台服务器的-computername运行它,模式仍然是3 OK行,然后X错误,然后5 […]

如何在Exchange数据库中获取2年以上的电子邮件列表,按用户使用Powershell进行sorting?

我们目前正在审查邮件归档和修改我们的保留政策。 最大的问题是(对于法律部门),我们要保存多久? 目前我们的用户有一个巨大的邮箱限制,并在过去都能够存档,因为他们认为合适。 因此,我们有几百GB的数据不在Exchange数据库中,但是我们可能最终将吮吸到Archive数据库中进行发现。 我想做的是能够为法律团队量化多less,如果我们回到1年,2年,3年等等。 我在TheDailyAdminfind了一个相当简单的PowerShell脚本,它大部分都是我所需要的,但是它把所有这些都集中在一起。 我希望能够看到结果,但是按用户sorting知道Sally拥有超过2年的47MB,查尔斯拥有超过2年的190MB等等。 这是我跑过的脚本: get-mailboxdatabase | get-mailbox -resultsize unlimited | get-mailboxfolderstatistics -folderscope all -includeoldestandnewestitems | export-csv mailbox_stats.csv 把它们全部放在档案里工作正常,但是我不能说谁的电子邮件属于谁。 我也专门在邮箱上运行了它,但我宁愿不在每个用户手动运行,因为这需要一段时间! 我不是Powershell的大师,但希望有一个更紧密的把握,可以帮助指向我的命令正确的方向,以帮助分解更多一点。 提前致谢!

Windows Server Backup:列出目标上的备份

我需要通过脚本检索系统备份卷上的备份列表。 在“预定备份”部分中单击“目的地使用情况”部分的“查看详细信息”后,可以在WSB GUI中find我所查询的信息: 我知道Get-WBBackupSet cmdlet,但这只是WB知道它已经在过去完成的备份列表,不一定是备份目标上存在的内容,每次单击“Refresh”时似乎都会被dynamic地重新读取信息”: Windows Server Backup如何收集目标信息? 基本原理:我想设置对由WB执行的备份运行的监视,以确保存在足够深的备份历史logging。 由Get-WBBackupSet返回的备份集列表似乎并不总是与磁盘上的内容一致,所以我宁愿不要将这些信息用于监视检查。

计划任务中的Exchange PowerShell会永久运行

我有一些Exchange 2010 PowerShell脚本,我希望按计划任务运行。 如果我使用“以其他用户身份运行”来启动PowerShell,那么我可以运行这些脚本并正确执行。 如果我使用同一个用户来安排一个任务,那么这个任务永远处于运行状态。 我怎样才能找出任务卡住的地方? 作为参考,这里是我如何启用Exchange的东西: . 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1' Connect-ExchangeServer -auto 以下是我尝试从Task Scheduler运行脚本的方法: powershell -command“&{。'c:\ windows \ script.ps1'}” powershell -file'c​​:\ windows \ script.ps1' powershell -file“c:\ windows \ script.ps1” 所有的结果都一样。 格儿…

PowerShell DSC组资源 – “使用提供的名称找不到主体”

我正在尝试使用PowerShell DSC将域组添加到本地pipe理员组。 这里是代码: Configuration TestSetup { Node localhost { Group Administrators { GroupName = "Administrators" MembersToInclude = "MYDOMAIN\TheAdministratorsGroup" } } } 当我运行它时,会导致以下错误: PowerShell provider MSFT_GroupResource failed to execute Test-TargetResource functionality with error message: Could not find a principal with the provided name [mydomain\theadministratorsgroup] + CategoryInfo : InvalidOperation: (:) [], CimException + FullyQualifiedErrorId : ProviderOperationExecutionFailure + […]

通过PowerShell远程安装.NET 4.6.1

我正在试图在一大群机器上远程安装.NET Framework4.6.1。 我正在使用powershell来远程编写脚本。 问题是,无论出于何种原因,.exe似乎不希望被远程调用。 我假设这是由于升级的.exe启动UI会话的事实。 但是,即使通过应允许远程安装的“/ q”参数,它仍然不起作用。 我没有得到任何错误,当RDP进入有问题的机器时,似乎没有升级或使用任何CPU进行升级。 我的脚本: Write-Host "Executing 'Upgrade dotnet 4.6' for $server" Invoke-Command -ComputerName $servers -Credential $credentials -ScriptBlock { $Url = 'https://download.microsoft.com/download/E/4/1/E4173890-A24A-4936-9FC9-AF930FE3FA40/NDP461-KB3102436-x86-x64-AllOS-ENU.exe' $Exe = "net461.exe" $Dest = "C:\\" + $Exe $Params = " /q" $client = new-object System.Net.WebClient $client.DownloadFile($Url,$Dest) Invoke-Expression ("cmd.exe /C " + $Dest + $Params) } 我也尝试使用巧克力,它也不起作用,因为我想同样的原因。 在本地运行巧克力。

PowerShell远程服务器使用CNAME,而不是电脑名称

我试图让PowerShell远程处理使用它的CNAME而不是计算机名称的服务器。 本地和远程机器都在同一个networking和域上。 我已经启用PowerShell的远程处理,并与计算机名称正常工作。 我已经将我的TrustedHosts设置为CNAME,并添加了CNAME的SPN,但是当我发出Enter-PSSession CNAME我得到以下内容: Enter-PSSession : Connecting to remote server CNAME failed with the following error message : WinRM cannot process the request. The following error occurred while using Kerberos authentication: Cannot find the computer CNAME. Verify that the computer exists on the network and that the name provided is spelled correctly. For more […]

如何断开使用PowerShell访问Windows共享文件夹的用户

确定用户访问共享文件夹使用PowerShell问题有一个很好的答案。 从此继续如何断开使用PowerShell脚本访问共享的用户。 有一个名为OpenFiles的Windows命令行工具,但我更喜欢PowerShell / WMI解决scheme。

我们如何检查PowerShell v2.0是否安装在服务器列表中?

如何检查PowerShell v2.0是否安装在服务器列表中? 服务器列表是Windows Server 2003和Windows Server 2008的组合。一个vbscript或PS脚本将是美好的。 我知道默认情况下在Windows Server 2008中安装了PowerShell,尽pipe我只是想确保有人不打扰服务器。