Articles of PowerShell

Powershell:了解打印机DACL

我正在尝试读取并最终为从打印服务器共享的打印机写入DACL。 这是我迄今为止,基于在互联网上发现的脚本: $pace = DATA { ConvertFrom-StringData -StringData @' 983052 = ManagePrinters 983088 = ManageDocuments 131080 = Print 524288 = TakeOwnership 131072 = ReadPermissions 262144 = ChangePermissions '@ } $flags = @(983052, 983088, 131080, 524288, 131072, 262144) $printers = Get-WmiObject -Class Win32_Printer -ComputerName "NAME" "Got Printers" foreach ($printer in $printers) { "" "Printer: $($printer.DeviceID)" $sd […]

交换:导出和删除项目

如何安全地使用New-MailboxExportRequest将数据从Exchange 2010邮箱导出到PST,并从源邮箱中删除导出的项目? Powershell cmdlet似乎缺less在Exchange 2007中已成为Export-Mailbox cmdlet一部分的-DeleteContent开关。 MailboxExportRequest完成后使用Search-Mailbox -DeleteContent似乎是一个坏主意,因为我真的只想删除已经成功导出的项目,并且找不到任何方法来获取由New-MailboxExportRequest处理的项目的全面列表。

使用WMI进行远程磁盘监视,无pipe理员权限

我正在设置一个受限制的WMI组,它应该能够从远程主机读取WMI信息。 我将该组设置为远程DCOM和性能监视器组的成员。 我还在WMI控制界面中设置了执行,启用和远程启用。 我得到的值,如果我从一个完整的pipe理像这样运行它如下所示。 PS Get-WmiObject Win32_LogicalDisk -computername myhost DeviceID : M: DriveType : 3 ProviderName : FreeSpace : 2279043964928 Size : 3790830256128 VolumeName : Static Data 使用受限帐户从相同的服务器运行我收到以下内容: DeviceID : M: DriveType : 3 ProviderName : FreeSpace : Size : VolumeName : 我最好的猜测是,我需要设置一个额外的安全级别,但我不知道在哪里。 build议? 编辑:看起来像这个问题只会在2003年主机上,然后只在特定的磁盘上。

如何使用PowerShell将Exchange项目移动到PST?

我们有一个邮箱,可以收到我们需要永久保留的状态邮件,并且包含潜在的大附件。 我需要能够定期(每天或每周)将这些消息移动到PST,所以想自动执行此操作。 目前我正在使用MailboxExportRequest将它们导入PST: New-MailboxExportRequest -ContentFilter {(Received -ge '01/01/2013') -and (Received -lt '01/02/2013')} -Mailbox "MonitorMailbox" -FilePath "\\Server\backup\EmailLog\MonitorMailbox 2013-01.pst" 我跟着一个SearchMailbox -DeleteContent : Get-Mailbox -Identity "MonitorMailbox" | Search-Mailbox -SearchQuery "Received:01/01/2013..01/02/2013" -DeleteContent 问题是,我不得不手动更新四个地方的date参数,我担心它不是非常事务性的 (如果这在上下文中是有意义的)。 我正在尝试创build一个PS脚本来遍历每个月份的date,并build立一组命令来旋转和导出这些信息,但想知道是否有一个更简单的方法来“移动到PST”,或者如果我需要尝试dynamic地构build上述语句。 到目前为止,这是一个更完整的脚本,它应该在本月初之前的10天内导出所有项目(以加速testing): $mailbox = "Cylindric" $endDate = Get-Date -Day 1 "00:00:00" $startDate = $endDate.AddDays(-10) $month = "{0:D2}" -f [int]$startDate.Month $year = "{0:D4}" -f [int]$startDate.Year Write-Host […]

Powershell脚本来压缩文件

我是Powershell的新手。 我有一个需要,我认为这将是完美的。 不过,我很快就到了我觉得我头脑发昏的地步。 基本上,我需要创build一个.zip文件。 我有一个如下所示的目录: MyStuff Dir1 Child1 File1.txt Child2 File1.png Child3 File1.txt Dir2 File1.txt File1.txt File2.txt File3.txt … 我需要创build一个名为bundle.zip的.zip文件。 Bundle.zip不应该包含MyStuff中的所有文件。 相反,我需要在.zip文件中包含MyStuff / File1.txt,MyStuff / File2.txt,MyStuff / File3.txt和MyStuff / Dir1 / *。 我不知道如何用PowerShell做到这一点。 我的机器上安装了PowerShell v1.0。 我一直在尝试PowerShell社区扩展的“Write-Zip”,但是,我得到一个错误:“Write-Zip”一词不被识别为cmdlet,函数,脚本文件或可操作的名称程序”。 我究竟做错了什么?

Powershell – 将禁用的计算机移动到OU

这将禁用的计算机帐户打印到屏幕上。 我想运行一个条件语句的结果,如果真的,将他们移动到我的“禁用”OU。 get-adcomputer -ldapfilter "(&(objectCategory=computer)(objectClass=computer)(useraccountcontrol:1.2.840.113556.1.4.803:=2))"|select Name, enabled

Windows客户端PowerShell报告

我正在努力寻找一种方法让我们的Windows机器向网页报告有关MAC地址,计算机名称,当前login的用户和IP地址的信息。 我写了一个PowerShell脚本,并将其设置为一个计划任务。 它工作的很好,但每当脚本运行时都会出现一个窗口。 有没有办法显示窗口。 我试过用“-noninteractive”,“-nologo”,“-windowstyle hidden”,“-noprofile”运行,都无济于事。 这是我用来运行它。 “powershell.exe -noninteractive -nologo -windowstyle hidden -command”C:\ Users \%LogonUser%\ Scripts \ CallHome.ps1“

寻找最快速的方式筛选旧文件

我们有多个文件服务器,其中包含了TB级和TB级的文件。 目前我们还没有系统存档/删除陈旧的数据。 我的任务是创build一个脚本,将移动/删除3年以上的文件。 移动/删除文件,只是“获取”文件是一个问题。 到目前为止使用Powershell。 我遇到了文件名/path长度超过248个字符的文件,Powershell似乎无法处理。 我也研究过Robocopy,但Robocopy无法访问LastAccessTime文件属性。 加上Powershell似乎真的很慢。 这是我一直在testing的代码: Get-ChildItem "\\path" -Force -Recurse | where {!($_.PSIsContainer) -and ($_.LastAccessTime -lt (Get-Date).AddYears(-3))} | select Mode,LastAccessTime,Length,Name 我的问题是 :是否有一个更快,更有效的方式来“获得”价值万亿字节的文件recursion(包括LastAccessTime属性),其中一些path超过248个字符? 主要是寻找免费的解决scheme,但如果有一些好的付费解决scheme,我会愿意检查出来。

Powershell脚本在以特定方式执行时以无限循环运行

我正在使用Puppet的Exec Powershell提供程序来运行一些PowerShell脚本。 我遇到了执行脚本的问题。 执行的方法导致脚本运行结束。 我被迫自己杀死这个进程,但脚本本身似乎正常运行。 我已经能够举出一个简单的例子,并缩小原因。 重现步骤 使用以下命令创buildC:\ backups \ scripts \ test.ps1 : 我很确定这个问题与我正在执行SQLCMD.exe的方式有关,或者与执行需要多长时间有关(大约一秒) $instance = ''; $latest_output = "Hi"; $cmd = "sqlcmd.exe -E -S .$instance -h -1 -m 1 -Q `"SET NOCOUNT ON; USE [master]; SELECT @@VERSION;`""; $output = [string](cmd.exe /C "$cmd"); $output = $output.Trim(' '); if ($output -eq $latest_output) { Write-Host "Up […]

使用远程PowerShell执行git命令会导致NativeCommmandError

执行远程PowerShell脚本时出现错误。 在本地机器上,我正在运行PowerShell脚本,该脚本使用Invoke-Command来切换到远程Amazon Windows Server实例上的目录,并使用后续的Invoke-Command来执行位于该服务器实例上的脚本。 服务器上的脚本试图从GitHub克隆一个存储库。 我可以成功地在服务器脚本中做“ls”甚至是“git –version”。 然而, git clone , git pull等会导致以下错误: 克隆到'MyRepo'中… + CategoryInfo:NotSpecified :(克隆到'MyRepo'…:String] [],RemoteException + FullyQualifiedErrorId:NativeCommandError 这是我第一次使用PowerShell或Windows Server。 任何人都可以提供这个问题的一些方向。 客户端脚本: $s = new-pssession -computername $server -credential $user invoke-command -session $s -scriptblock { cd C:\Repos; ls } invoke-command -session $s -scriptblock { param ($repo, $branch) & '.\clone.ps1' -repository $repo -branch $branch} -ArgumentList […]