Articles of PowerShell的

PowerShell Windows安装程序Com对象

我正在尝试使用Powershell修改MSI文件的内容。 为此,我创build一个WindowsInstaller.Installer的实例,然后使用$ installer.OpenDatabase和$ database.OpenView。 类似的function在VBScript中工作,我看到在线样本似乎工作。 $installer = new-object -comobject "WindowsInstaller.Installer" $database = $installer.OpenDatabase("C:\Temp\Setup.msi", 1) 对于上面的代码,我得到一个错误“方法调用失败,因为[System .__ ComObject]不包含名为”OpenDatabase“的方法。 $installer = new-object -comobject "WindowsInstaller.Installer" $database = $installer.InvokeMethod("OpenDatabase","C:\Temp\Setup.msi", 1) 如果我尝试使用$ installer.InvokeMethod我得到相同的错误“方法调用失败,因为[System .__ ComObject]不包含名为”InvokeMethod“的方法。 任何帮助将非常感激。 谢谢。

使用Powershell使用查找文件recursion地重命名目录

我需要重命名很多目录和他们的子目录。 我有一个csv文件,其中包含旧的目录名称和所需的新名称。 1,blah,old_name1,new_name2,wibble 2,foo,old_name2,new_name2,bar 3,john,old_name3,new_name3,paul 4,george,old_name4,new_name4,ringo 请注意,一些目录名称是 old_name1-morestuffhere 需要重新命名 new_name1-morestuffhere 我广泛地知道我将如何在bash中做到这一点: mv -r `cat file.csv | awk -F, '{print $3* $4*}'` ..但我必然会完全失去PowerShell。 编辑:这是我到目前为止。 这是closures吗? cat .\file.csv | foreach { $oldname = $_.split(",")[2], $newname = $_.split(",")[3], move-item $oldname*, $newname*}

powershell:改变当前会话的文化

我在Windows Vista上使用PowerShell。 如何改变当前会话的文化? 我的电脑的文化是tr-TR,所以我得到土耳其语的错误信息。 我想换成EN? 任何机会?

在Windows上locking计算机之前运行脚本

我已经写了一些PowerShell允许我利用键盘媒体键的力量来控制当前正在运行的任何音乐。 我想要做的是在计算机被locking的情况下运行脚本。 所以我可以暂停/停止音乐。 然后一旦机器解锁,恢复音乐。 酷啊? 我的第2次尝试是: 1 – WMI事件注册 这是locking事件 Register-wmievent –query "Select * from __instancecreationevent within 1 where TargetInstance isa 'Win32_NTLogEvent' And TargetInstance.EventCode = 4800" -Action {write-host "Pausing`r`n"; set-playpausetrack} 这是解锁事件 Register-wmievent –query "Select * from __instancecreationevent within 1 where TargetInstance isa 'Win32_NTLogEvent' And TargetInstance.EventCode = 4801" -Action {write-host "Resuming`r`n"; set-playpausetrack} 不幸的是,我认为locking事件太晚了,出于安全原因,操作系统会暂停后台交互。 当我解锁电脑时,它会触发locking和解锁事件。 2 – […]

当文件被添加到文件夹时,Powershell脚本运行.bat文件

我想监视Windows 7文件夹,并有一个.bat文件运行时,任何新的文件被添加到文件夹。 看来我应该能够使用PowerShell,这是安装在计算机上。 我已经阅读了一些这样的答案,但是我不能通过修改我看到的东西来获得任何工作。 细节: 要监视的文件夹: c:\aaa\bbb\monitorThis 要将.htm文件添加到受监控文件夹时运行batch file: c:\aaa\bbb\runA.bat Powershell脚本文件: c:\aaa\bbb\folderWatcher.ps1 有人可以描述一下folderWatcher.ps1的内容应该是什么样子,包括包含运行.bat文件命令的行,注册和注销事件,等等。 另外,右键单击.ps1文件并select“使用PowerShell运行”来启动监控,如果是这样,那么如何停止它? 更新: 按照要求,这是我到目前为止folderWatcher.ps1,但这只是一个开始,从我见过的想法: $folder = "c:\aaa\bbb\toConvert" $filter = "*.*" $fsw = new-object System.IO.FileSystemWatcher $folder, $filter -Property @{ IncludeSubDirectories=$false NotifyFilter = [System.IO.NotifyFilters]'FileName, LastWrite' } $onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { Start-Process cmd -ArgumentList "/c runA.bat" -WorkingDirectory "C:\aaa\bbb" } 注意:重新筛选,我不关心添加什么样的文件,因为我们只会把.htm文件放在该文件夹,所以添加到它的任何东西,我想触发.bat。 更新二 […]

驱动器盘符和冒号后没有斜杠的path – 它指向什么?

我打错了一个path,而不是c:\foo.txt写了c:foo.txt 。 我预料它要么失败,要么parsing为c:\foo.txt ,而是似乎在当前用户的home文件夹中parsing为foo.txt 。 Powershell返回: PS C:\> [System.IO.Path]::GetFullPath("c:\foo.txt") c:\foo.txt PS C:\> [System.IO.Path]::GetFullPath("c:foo.txt") C:\Users\Administrator\foo.txt PS C:\> [System.IO.Path]::GetFullPath("g:foo.txt") G:\foo.txt 从命令行运行explorer.exe并将以上任何一个结果传递给C:\ Users \ Administrator \ Documents以打开。 我还没有find任何文件,我完全困惑,请解释行为。

从Windows任务计划程序PowerShell脚本无法正常工作

概述:我有一个脚本,用于通过WMI在SCCM中查询新的应用程序请求。 当在PowerShell控制台中手动启动时(无论是否boost,无关紧要),该脚本都可以正常工作。 我需要通过任务计划程序运行脚本。 目前设置为使用pipe理员凭据运行,并选中“以最高权限运行”checkbox。 问题:无法从Windows Server 2008 R2中的任务计划程序正确运行。 没有报告错误(任务计划程序返回错误代码0),但它似乎没有继续行,读取: $GetAppRequest = Get-WmiObject -Class SMS_UserApplicationRequest -Namespace root/SMS/site_$SiteCode | Where-Object {$_.CurrentState -like "1"} | ForEach-Object { 这是完整的脚本: #Hard-coded variables $SiteCode = "MySiteCode" $ComputerName = "My-SCCM-Server" $GUIDFilePath = "C:\Scripts\SCCM\GUIDList.txt" $FilePath = "C:\Scripts\SCCM" $smtpServers = "smtp1.domainname.com","smtp2.domainname.com" $reliableSmtpServer = $null $logpath = "C:\Scripts\SCCM\RequestLog.txt" #logging functionality function log($message, $type){ $date = […]

应该安装在Windows 7计算机上的PowerShell Active Directory模块导入它,还是可以从Windows 2008 R2 DC远程导入?

目前我正在taskpads上委托一些远程pipe理员的权限。我有以下问题; – >对于在PowerShell中导入活动目录模块,它是本地安装的,还是可以从Windows 2008 R2 DC远程导入? – >对于在远程工作站上工作的任务板,pipe理工具是否应安装在所有的远程机器上,还是有集中的维护方式? 请让我知道是否有关于我的努力的澄清/问题。

用密码创buildwindows用户的脚本

在我们的默认Windows系统映像上,具有pipe理成功的用户使用秘密密码创build。 这用于支持目的。 我需要的是一个脚本来创build这个用户,但不暴露纯文本的密码(也许使用哈希值?有没有办法实现呢? 我可以自由使用PowerShell或任何有意义的 – 我只需要能够给这个人,而不需要他们知道密码。

通过Powershell或BATCH序列化symstore的执行

我们正在努力整合一个步骤到我们的持续集成(CI)服务器(CruiseControl.NET)中。 我们希望将从构build过程生成的debugging符号*.pdb注册到Microsoft Symbol Server中。 由Microsoft实现,符号服务器是Visual Studio用于查找C ++ / C#可执行文件的*.pdbdebugging符号的目录结构。 Microsoft提供了一个命令symstore ,它将debugging符号放在一个目录中,并根据需要填充中央符号存储目录。 symstore的麻烦是明确指出并行运行并不安全。 我们可以尝试通过BATCH或Powershell脚本禁止同时执行symstore命令的方法或策略是什么? 我们在方法上很灵活,但是因为我们在Windows平台上运行,所以BATCH和Powershell是首选解决scheme。 澄清: 对于我们的使用情况, symstore需要从两个不同的CI服务器运行,这会将符号保存在一个通用的networking驱动器上。 资源: symstore :: http://msdn.microsoft.com/en-us/library/windows/desktop/ms681417(v=vs.85).aspx