Articles of PowerShell的

通过Powershell更改Chrome设置

我想创build一个脚本来改变默认的页面缩放在Chrome中,但是我不知道这些选项存储在哪里。 我想我必须find一个合适的选项文本文件,parsing它,然后在那里使用PowerShell进行文本replace,以便应用更改。 每当我将笔记本电脑插到外接显示器上时,我都需要这样做,而且手工操作也是有点令人捧腹的 有任何想法吗?

PowerShell从命令行参数中剥离双引号

最近我一直在使用PowerShell中的GnuWin32时遇到一些麻烦,只要涉及到双引号。 经过进一步的调查,看来PowerShell从命令行参数中剥离了双引号,即使正确转义也是如此。 PS C:\Documents and Settings\Nick> echo '"hello"' "hello" PS C:\Documents and Settings\Nick> echo.exe '"hello"' hello PS C:\Documents and Settings\Nick> echo.exe '\"hello\"' "hello" 请注意,当传递给PowerShell的echo cmdlet时,双引号是存在的,但是当作为parameter passing给echo.exe时 ,除非用反斜线转义(即使PowerShell的转义字符是反引号,而不是反斜线),否则双引号将被剥离。 这对我来说似乎是一个错误。 如果我将正确的转义string传递给PowerShell,那么PowerShell应该处理任何转义可能是必要的,但是它调用该命令。 这里发生了什么? 目前,解决方法是根据这些规则来逃避命令行参数(这些规则似乎被PowerShell用来调用.exe文件的CreateProcess API调用所使用): 要传递一个双引号,用反斜线转义: \" – > " 要传递一个或多个反斜杠,然后加双引号,用另一个反斜杠转义每个反斜杠,然后转义引号: \\\\\" – > \\" 如果后面没有双引号,则反斜杠不需要转义: \\ – > \\ 请注意,进一步转义双引号可能需要将Windows API转义string中的双引号转义为PowerShell。 下面是一些使用GnuWin32的echo.exe的例子: PS C:\Documents and Settings\Nick> echo.exe […]

将string$variables传递给invoke-command scriptblock参数-name

我目前正在编写一个相对简单的PowerShell脚本来重启/停止/启动远程机器上的服务。 在我决定在Invoke-Command Scriptblock中将一个$Servicevariables传递给-Name参数之前,一切正常。 我知道我做错了什么或忘记了一些东西,但是你的帮助将不胜感激。 这里是部分代码给我突出的问题 [CmdletBinding()] Param([Parameter(Mandatory=$True,Position=1)] [string]$Server, [Parameter(Mandatory=$True)] [string]$Service) get-service -ComputerName $Server -Name "$Service" Write-Host("————————————————") Write-Host("Execute action on selected service: ") Write-Host("1. Restart service ") Write-Host("2. Stop service ") Write-Host("3. Start service") $choice = Read-Host -Prompt "Your choice" switch ($choice) { 1 {Invoke-command -Computername $Server {Restart-Service -Name "$Service" } } 2 {Invoke-command -ComputerName $Server […]

通过PowerShell创build具有path组件的registry项

对于传统应用程序,我需要创build一个名称为c:/foo/bar/baz的registry项。 (注:正斜杠,不反斜杠)要清楚:这是一个单一的键的名称,正斜杠,否则看起来像一个Windowspath。 因为我需要对很多服务器进行脚本编写,所以PowerShell看起来是一个很好的select。 问题是,我不知道如何通过PowerShell创build一个格式的密钥。 New-Item -Path HKLM:\SOFTWARE\Some\Key -Name 'c:/foo/bar/baz'错误与PowerShell认为我正在使用/作为path分隔符,无法findpathHKLM:\Software\Some\Key\c:\foo\bar ,确实不存在(也不应该)。 我无法find任何其他方式(ab)使用New-Item来获得我想要的。 有什么我失踪,或者我应该放弃,只是生成和加载registry转储的老式的方式?

如何从PowerShell中访问Web服务?

我想从Windows PowerShell中使用给定的(简单的)WSDL访问Web服务。 是否有捷径可寻?

我可以使这个剧本更快吗?

我为实习编写了一个简单的脚本,通过提供的目录浏览并删除任何超过指定天数的文件。 我已经花了我所有的空闲时间,试图收紧。 这是迄今为止我所得到的: function delOld($dir, $numDays){ $timespan = new-timespan -days $numDays $curTime = get-date get-childItem $dir -Recurse -file | where-object {(($curTime)-($_.LastWriteTime)) -gt $timespan} | remove-Item -whatif } 这是一个函数调用的例子: delOld -dir "C:\Users\me\Desktop\psproject" -numDays 5 对于阅读的难点,我发现将这些操作压缩成一行比将它们重新分配给每个迭代的易读variables更有效率。 为了testing目的,删除项目目前已被删除。 我知道,在这一点上,我可能无法加速太多,但是,我正在运行一个TB文件,所以每个操作都很重要。 预先感谢您提供的任何build议!

焦点IE浏览器窗口在PowerShell中

我的代码: $ie = new-object -com "InternetExplorer.Application" $ie.navigate("http://localhost") $ie.visible = $true $ie.fullscreen = $true 但是,全屏后,窗口仍然出现在 Windows任务栏后面 。 当我点击窗口使其焦点时,任务栏落后,并显示我想要如何。 我怎样才能做到这一点编程? 谢谢!

SET-ACL文件夹权限没有正确应用我的PowerShell脚本

我有两个脚本:第一个创build一个新的根文件夹,第二个创build一个新的子文件夹。 它大部分工作正常,但是当inheritance的权限被下拉到子文件夹时,权限不会显示在“安全”选项卡上。 但是,如果我检查高级权限显示正确… 这似乎是导致问题,因为inheritance的权限似乎没有正确应用到文件夹。 我究竟做错了什么? 用图像来澄清: 这是我的两个脚本: 根/父文件夹创build: # Create initial ACE # Create the initial Object # Set domain – This could also be changed to prompt for domain if we decide it is needed # Define local Administrators group by Well Known SID # Set additional ACEs for the new AD File Share […]

如何在批处理脚本运行时获取当前的活动窗口?

我有一个批处理脚本,我想用热键来运行,这个脚本应该在活动窗口中做一些动作(例如,创build一组特定的文件夹,或小写文件夹内所有文件的名称)。 所以脚本需要在被调用时引用活动窗口。 我试图离开别名的“开始”字段为空,但回显%cd%总是打印“C:\ Windows \ System32”而不是当前的活动窗口。

错误MSB3147:找不到所需的文件“setup.bin”发布到本地失败

在网上冲浪和讨论这个问题之后 ,我终于问了一个关于旧错误的新问题。 我在Windows 10上使用Visual Studio Enterprise 2015。 这个问题和答案是从2011年MSBuild:错误MSB3147:无法find所需的文件“setup.bin” 。 这个问题和接受的答案是在2012年写的,其他答案是从2015年,有一个从2016年,这是没有帮助无法find所需的文件“setup.bin” 。 该项目的目标版本是4.0。 我正在运行一个只能从另一台本地机器运行的psl脚本。 我不断收到这个错误: C:\ Program Files \(x86)\ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets(4769,5):错误MSB3147:找不到需要的文件'setup.bin' SRC \ XXX \引擎”。 [C:\ dev \ xxx \ src \ xxx \ xxx.csproj]发布到本地失败 我已经尝试了每个答案的每个解决scheme。 唯一的作品是从这个答案 <BootstrapperEnabled>false</BootstrapperEnabled> 如果需要设置为true,那么这是一个问题。 我也在MSDN上跟着这个答案 。 这个博客 。 我添加了registry项: 我也注意到Windows 10内置了.NET框架,而且它错过了4.0。 我已经卸载了dotNetFx40_Full_setup.exe,并在Visual Studio上运行了修复程序,以便根据需要安装sdks。 这没有帮助。 我有一个MSBuild的exe文件应该是这样的 : […]