Articles of PowerShell

使用PowerShell将用户添加到本地pipe理员组

我想使用PowerShell将特定用户添加到计算机上的本地pipe理员组。 我将在本地机器上具有pipe理权限的用户的上下文中运行PowerShell脚本。

什么是Windows PowerShell 2.0中的运行空间?

今天,我聆听了关于PowerShell 2.0的HanselMinutes播客。 Scott Hanselman在TechEd 2009采访了Hal Rottenberg和Kirk Munro。 他们谈到了PowerShell 2.0中的RunSpaces 。 有人可以解释他们背后的概念,并给出一些(现实世界)的用例或例子吗? 谢谢!

如何区分Windows Powershell中的两个文件夹?

我试图find使用Windows Powershell的两个文件夹结构的内容的差异。 我已经使用下面的方法来确保文件名是相同的,但是这个方法并不告诉我文件的内容是否相同: $firstFolder = Get-ChildItem -Recurse folder1 $secondFolder = Get-ChildItem -Recurse folder2 Compare-Object -ReferenceObject $firstFolder -DifferenceObject $secondFolder 在这个ServerFault问题中描述的技术用于区分单个文件,但是这些文件夹包含数百个各种深度的文件。 解决scheme并不一定需要告诉我具体在文件中是什么不同 – 只是他们是。 我对元数据的差异不感兴趣,比如我已经知道的date不同。

为什么成功运行PowerShell脚本后,PsExec挂起?

剧本相当简单。 只是试图开始一堆的Windows服务。 在目标机器上执行本地工作正常。 当通过PsExec完成时,脚本实际上执行得很好,直到我在我的CMD提示符上点击“enter”键,它才会返回。 这是一个问题,因为这是从TeamCity中调用的,并且它使代理挂起等待PsExec返回。 我已经尝试了以下内容: 添加一个exit并exit 0 Powershell脚本的末尾exit 0 根据这个SF问题中的答案,将一个< NUL添加到PsExec调用的末尾 添加一个> stdoutredirect 这就是我实际调用psexec的方式: psexec \\target -u domain\username -p password powershell c:\path\script.ps1 无论我做什么,它都会挂起,直到我在本地的cmd提示符下。 在我进入后,我收到消息: powershell exited on target with error code 0.

使用powerhshell作为非pipe理员服务帐户计划重新启动服务

在我被击落之前,我知道如何安排一项任务,使用powershell重新启动一项服务,或给非pipe理员帐户授予重新启动服务的权限。 这不是问题。 然而问题是所有这三项任务的结合。 我有一个Windows服务需要处理networking文件夹上的文件。 因此,它使用“服务帐户”login,该服务帐户实际上只是普通的域帐户。 此域帐户不是pipe理员,但具有对所述文件夹的访问权限。 该服务运行良好,这是工作。 但是,有时会在其中一个文件中出现错误,导致无法处理其他文件。 通常需要一段时间才能注意到,还有一些积压。 所以,我在PowerShell中创build了一个监视脚本,用来轮询这些错误文件的networking文件夹。 如果find了,文件将被移动到一个临时文件夹进行审查,并且服务需要重新启动。 我通过组策略提供了服务帐户权限来启动和停止服务。 当我用服务帐户login到服务器时,我可以使用服务MMC手动重新启动服务。 我也能够执行PowerShell脚本,它完全是它应该做的:轮询文件夹,移动文件并重新启动服务。 大! 在下一阶段,我创build了一个计划任务,每10分钟运行一次。 该任务使用与服务相同的服务帐户来执行powershell脚本。 选中“执行最高权限”框。 就像我说的,powershell脚本需要访问networking驱动器,所以我不能运行它作为本地服务器pipe理员,我不想使用域pipe理员凭证这样一个琐事的任务。 (我尽量实现最小特权的原则。) 我使用本地安全策略MMC为服务帐户提供了本地服务器上的“作为批处理作业login”权限。 现在对于我无法弄清楚的部分:在计划的时间,计划任务成功完成,并执行PowerShell脚本。 脚本轮询文件夹并移动错误文件。 唯一不起作用的是重新启动服务…?! 再次,手动运行脚本作为相同的用户完美工作。 我在事件查看器中看不到太多内容,但是在我的脚本上logging了这个错误: TerminatingError(停止服务):“无法在计算机上打开服务控制pipe理器”,此操作可能需要其他权限。 我用来重新启动服务的命令是: Stop-Service -Verbose -DisplayName $($service[1]) … Start-Service -Verbose -DisplayName $($service[1]) (我在2008 R2域上使用Windows Server 2012 R2和PowerShell版本4)。 更新:我都尝试使用subinacl设置服务的权限(如此处所述),并手动设置SDDLstring(如此处所述),所以我的控制标志看起来像这样(A; CCLCSWRPWPDTLOCRRC ;;; S-1- X-XX-XXXXXXXXXX-XXXXXXXX-XXXXXXXXX-XXXX)。 我也尝试在GPO中将服务权限设置为完全控制。 这些都没有解决这个问题。 它必须是一个我仍然忽视的特权问题,因为当我使用服务器上的本地pipe理员的域帐户安排任务时,它工作得很好。

启用Powershell远程,访问被拒绝?

我试图启用Windows 2008 R2服务器上运行的工作组模式下的Powershell远程处理。 我在PowerShell控制台中运行了命令Enable-PSRemoting。 PS C:\Windows\system32> Enable-PSRemoting WinRM Quick Configuration Running command "Set-WSManQuickConfig" to enable this machine for remote management through WinRM service This includes: 1. Starting or restarting (if already started) the WinRM service 2. Setting the WinRM service type to auto start 3. Creating a listener to accept requests on any IP address […]

是否有可能从Windows 8上的PowerShell启用MSMQ?

是否有可能从Windows 8(.1)PowerShell启用MSMQ ? 如果是这样,一个人怎么做?

如何使用configuration文件(ini,conf,…)与Powershell脚本? 可能吗?

是否有可能使用PowerShell脚本configuration文件? 例如configuration文件: #links link1=http://www.google.com link2=http://www.apple.com link3=http://www.microsoft.com 然后在PS1脚本中调用这个信息: start-process iexplore.exe $Link1 在此先感谢您的帮助!!

新ADUser -Name长度太长

我需要为AD中的OU添加大约500个用户 我已经编写了我需要的所有东西,但是,它给出了错误: the name provided is not a properly formed 这是脚本 New-ADUser -Name C080CAB1-9756-409F-914D-AE3971F67DE7 -Path "OU=Staging,DC=domain,DC=local" -accountPassword (convertto-securestring "zagreb+scotch8355" -asplaintext -force) -PasswordNeverExpires $True -CannotChangePassword $false -Enabled $true 我跑了几个testing来解决问题是什么: New-ADUser -Name "C080CAB1-9756-409F-914D-AE3971F67DE7" -Path "OU=Staging,DC=domain,DC=local" -accountPassword (convertto-securestring "zagreb+scotch8355" -asplaintext -force) -PasswordNeverExpires $True -CannotChangePassword $false -Enabled $true New-ADUser -Name 'C080CAB1-9756-409F-914D-AE3971F67DE7' -Path "OU=Staging,DC=domain,DC=local" -accountPassword (convertto-securestring "zagreb+scotch8355" -asplaintext -force) -PasswordNeverExpires […]

为所有现有用户和所有新用户添加HKCU密钥和值的最佳方法?

我需要将HKCU密钥和值添加到特定OU中的所有计算机,所有现有用户configuration文件和默认configuration文件。 什么是最好的方法来解决这个问题? 我可以枚举并遍历所有的NTUSER.DAT,加载configuration单元,添加键和卸载configuration单元,但这似乎是一个笨拙的方式来做到这一点。 任何人有更好的主意? 我想编写脚本(最好是PowerShell),并尽可能推送更改,但组策略login脚本也可以。