Articles of PowerShell的

使用Powershell远程编辑registry项

是否有可能使用Powershell脚本远程编辑registry项? 如果是,怎么样? 我有一个7台服务器的列表,我必须禁用Windows更新设置。 我编写了下面的脚本,但只能用localy: $regkey = "HKLM:\SOFTWARE\microsoft\……\auto update" set-itemproperty -path $regkey -name AUOptions -value 1 set-itemproperty -path $regkey -name ElevateNonAdmins -value 0 set-itemproperty -path $regkey -name IncludeRecommendedUpdates -value 0 任何build议? 谢谢!

如何在名称中使用正斜杠创buildregistry项

我需要创build以下registry项HKLM:\software\bmc software\control-m/agent但由于在“代理程序”之前的正斜杠, 我没有问题创build一个没有正斜杠的条目例如: PS C:\powershell> new-item -path 'HKLM:\software\bmc software\control-mXXXagent' 但用正斜杠创build失败。 PS C:\powershell> new-item -path 'HKLM:\software\bmc software\control-m/agent' New-Item:指定path的registry项不存在。 在行:1 char:10 + new-item <<<< -path'HKLM:\ software \ bmc software \ control-m / agent'+ CategoryInfo:InvalidArgument:(HKEY_LOCAL_MACHINE; tware \ control-m:String) [New-Item],ArgumentExceptio n + FullyQualifiedErrorId:System.ArgumentException,Microsoft.PowerShell.Commands.NewItemCommand 而使用PowerShell的“转义字符”也无济于事。 PS C:\powershell> new-item -path 'HKLM:\software\bmc software\control-m`/agent' New-Item:指定path的registry项不存在。 在行:1 char:10 + new-item <<<< -path'HKLM:\ software \ […]

如何更改环境variablespowershell并启动应用程序

在PowerShell中,我需要更改系统pathvariables: $oldPath = [System.Environment]::GetEnvironmentVariable('Path', 'Machine') [System.Environment]::SetEnvironmentVariable('Path', (Transform-It $oldPath), 'Machine') 然后启动一个程序: & $someExeName 'someargument' 我得到的问题是可执行文件正在使用旧的环境。 它不承认新的道路。 如果我还更改$ env.path,只更改此PowerShell会话的path,它也不会传播到新的进程。 如果我closuresPowerShell并在新窗口中启动可执行文件,那就没问题了。 推测它是从PowerShell进程inheritance(未更新)的环境 在PowerShell中更改环境variables并使其从该窗口启动的新进程识别的最佳做法是什么?

PowerShell 2.0命令行redirect

我正在寻找关于以下差异的解释: 鉴于下面的PowerShell脚本foo.ps1 : write-host "normal" write-error "error" write-host "yay" 运行它 C:\>powershell .\foo.ps1 > out.txt 2>&1 生产: normal C:\foo.ps1 : error At line:1 char:10 + .\foo.ps1 <<<< + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,foo.ps1 Write-Host : The OS handle's position is not what FileStream expected. Do not use a handle simultaneously in […]

System.Net.WebClient的powershell字符编码

我正在运行以下命令: ([xml](new-object net.webclient).DownloadString( "http://blogs.msdn.com/powershell/rss.aspx" )).rss.channel.item | format-table title,link 其中一个RSS项目的输出包含这个奇怪的文本: You Don’t Have to Be An Administrator to Run Remote PowerShell Commands 所以,问题是: 为什么混合在字符? 撇号发生了什么事? 为什么输出呈现为Don’t应该渲染为Don't ? 我将如何在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。 更新二 […]