Articles of PowerShell的

在boost的窗口中调用BAT并更改ENVvariables

在PowerShell脚本中,我必须在提升的窗口中调用batch file。 所以我呢 Start-Process my.bat -Verb runas 现在, my.bat期望在原始窗口中设置一些ENVvariables。 但是,由于提升的窗口是以pipe理员身份执行的,因此我设置为普通用户的这些variables似乎没有在pipe理员窗口中设置。 有没有办法在调用my.bat之前在pipe理窗口中设置ENVvariables?

如何将PowerShell的文字双引号传递给本机命令?

我想使用Powershell命令行(特定程序不重要)在awk / gawk中打​​印string文字。 但是,我认为我误解了引用规则的某处–PowerShell显然删除了双引号内的本机命令,而不是将它们传递给命令行。 这在bash中工作: bash$ awk 'BEGIN {print "hello"}' hello <– GOOD 这在PowerShell中有效 – 但重要的是我不知道为什么需要转义 : PS> awk 'BEGIN {print \"hello\"}' hello <– GOOD 这在PowerShell中不会打印任何内容: PS> awk 'BEGIN {print "hello"}' <– NOTHING IS BAD 如果这真的是在PowerShell中做到这一点的唯一方法,那么我想了解引用规则链,解释了原因。 根据http://technet.microsoft.com/en-us/library/hh847740.aspx中的PowerShell引用规则,这不应该是必要的。 BEGIN解决scheme Duncan下面的提示是,您应该将此函数添加到您的PowerShellconfiguration文件中: filter Run-Native($command) { $_ | & $command ($args -replace'(\\*)"','$1$1\"') } 或专门为awk: filter awk { $_ | […]

string比较不能在PowerShell函数中工作 – 我做错了什么?

我试图做一个别名的git commit也将日志logging到一个单独的文本文件。 但是,如果git commit返回"nothing to commit (working directory clean)" ,它不应该logging任何东西到单独的文件。 这是我的代码。 git commit别名的作品; 输出到文件的作品。 但是,无论从git commit返回什么,它都会logging消息。 function git-commit-and-log($msg) { $q = git commit -a -m $msg $q if ($q –notcontains "nothing to commit") { $msg | Out-File w:\log.txt -Append } } Set-Alias -Name gcomm -Value git-commit-and-log 我正在使用PowerShell 3。

使用PowerShell Invoke-Command和Process让stdout显示在控制台上

我有一个使用Invoke-Command的Powershell脚本。 以下是正在调用的代码: $scriptblock = { $process = New-Object system.Diagnostics.Process $si = New-Object System.Diagnostics.ProcessStartInfo $si.FileName = $cmd $si.Arguments = $cmd_args $si.UseShellExecute = false $si.RedirectStandardOutput = true $process.StartInfo = $si $process.Start() $processId = $process.Id $process.WaitForExit() } Invoke-Command -ScriptBlock $scriptblock 当脚本从PowerShell窗口运行时,问题与获取进程的标准输出显示给PowerShell控制台有关。 现在,我确信可执行文件$ cmd发出到标准输出,当我运行与cmd.exe的可执行文件,它显示输出到该控制台。 当我从NodeJS脚本调用这个Powershell脚本时,我也能够成功地redirect输出: var exec = require('child_process').exec, var cmd = 'powershell -ExecutionPolicy Bypass "' + launch_cmd + […]

使用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议? 谢谢!

自动执行远程桌面连接

我们在开发环境中使用了许多远程桌面,并且在多个环境中部署了许多服务器。 记住他们的IP,用户名和密码非常繁琐。 我想写一个带有button的小工具。 点击后,我想启动这些远程桌面,自动从某个列表中获取用户名和密码。 我知道有一个相当于MS远程桌面的命令行: mstsc 。 这个线程build议这样做,如下所示: cmdkey /generic:TERMSRV/"computername or IP" /user:"username" /pass:"password" mstsc /v:"computer name or IP" 我跑第一线,它说成功添加凭据。 然后,当我运行第二行时,它只是运行指定的IP的远程桌面连接,并要求input用户名和密码。 我希望通过自动应用cmdkey指定的凭证,在指定的IP上打开远程连接的桌面。 这里有什么问题? 是否有可能使用这样的Powershell脚本? 我可以通过HTML页面调用这个脚本吗(因为还有很多其他的资源可以放到网页上,这样我们的开发人员就可以把它作为一个单独的链接,这样我们不会浪费时间和精力去find它们想要它们。是否可以通过注册应用程序到URIscheme ?) 有没有其他的(标准)方法?

在Windows服务器数据中心没有findWebAdministration的PowerShell模块

在Windows Server 2008 Datacenter中,找不到PowerShell webadministration模块。 我试过Get-PSSnapin和Get-Module -ListAvailable ,它们都没有显示Get-Module -ListAvailable 而我没有看到目录%SystemRoot%\system32\WindowsPowerShell\v1.0\Modules下的webadministration %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules ! 我是否需要安装或启用某些东西才能在Datacenter上进行Webpipe理?

如何在PowerShell中批量重命名文件?

我正在尝试执行以下操作: Rename-Item c:\misc\*.xml *.tmp 我基本上想要将目录中每个文件的扩展名改为.tmp而不是.xml 。 我似乎无法find一个简单的方法来在PowerShell中做到这一点。

检测IPv6是否在Windows机器上启用

我写了一个PowerShell脚本,将作为我们的服务器构build一致性testing。 我需要做的事情之一是检测IPv6networking是否被禁用。 WMI表示此信息可以在Win32_NetworkAdapterConfiguration的IPAddress属性中find,但可以是IPv6或IPv4。 这不是给我一个我希望find的“是/否”的答案。 其他的注意事项是,我不希望通过直接访问registry来刮擦细节,也不会从ipconfig等命令的输出中刮擦。 鉴于我们的环境混合了2003/2008年的机器,任何人都可以想办法testingIPv6吗? 干杯

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标准输出中获得正确的字符?