Articles of PowerShell的

将IIS AppPool \ ASP.NET v4.0添加到本地Windows组

我正在尝试使用PowerShell脚本将用户IIS AppPool \ ASP.NET v4.0添加到性能监视器用户组,以便能够使用ASP.NET应用程序中的自定义性能计数器。 但是,我不知道如何解决使用ADSI自动创build的ASP.NET用户。 这适用于我: $computer = $env:COMPUTERNAME; $user = [ADSI]"WinNT://$computer/Administrator,user" $groupToAddTo = "TestGroup" $parent = [ADSI]"WinNT://$computer/$groupToAddTo,group" $parent.Add($user.Path) 但是,我无法弄清楚如何findASP.NET v4.0用户: $computer = $env:COMPUTERNAME; # $user = [ADSI]"WinNT://$computer/IIS AppPool/ASP.NET v4.0,user" # <– Doesn't work $groupToAddTo = "TestGroup" $parent = [ADSI]"WinNT://$computer/$groupToAddTo,group" $parent.Add($user.Path) 有关如何使用ADSI解决该用户的任何线索? 或者,使用Powershell或其他命令行工具来实现我想要的任何其他出色的方法? GUI工作正常,但是,自动化是这里的关键。

Powershell在windows和unix中正确生成文件path

我想为PowerShell脚本中的文件path生成一个string。 我希望这在Windows和Mac都可以工作。 目前代码被硬编码到窗口中,如path(“\” – > windows,“/” – > unix): $templatep="$CoreRoot\templates\$serviceName" 我改变了这个: $templatep= Join-Path $CoreRoot "templates" $serviceName它在与Powershell 6.0的mac中工作。 但它不能在我的Windows服务器与Powershell 4.我必须做这样的事情: $templatep= Join-Path $CoreRoot -ChildPath "templates" | Join-Path -ChildPath $serviceName 任何想法,为什么这只是在我的Mac? 这是在PowerShell 5或6的新function? 我不喜欢pipe道多个joinpath。 有一个更好的方法吗? 谢谢!

通过PowerShell加载types库并编写Windows Live Writer脚本

一般来说,我对COM和Windows编程/脚本非常陌生。 我正在做的是脚本Windows Live Writer; 根据文件之前,我可以打电话 $o = New-Object -c WindowsLiveWriter.Application 我需要首先加载TLB,所以我应该调用add-type命令,不幸的是它失败了: PS C:\Users\NoWhereMan> add-type windowslivewriter.application Add-Type : c:\Users\NoWhereMan\AppData\Local\Temp\a7ifbimo.0.cs(1) : A namespace does not directly contain members such as fields or methods c:\Users\NoWhereMan\AppData\Local\Temp\a7ifbimo.0.cs(1) : >>> windowslivewriter.application At line:1 char:9 + add-type <<<< windowslivewriter.application + CategoryInfo : InvalidData: (c:\Users\NoWher…elds or methods:CompilerError) [Add-Type], Exception + FullyQualifiedErrorId : SOURCE_CODE_ERROR,Microsoft.PowerShell.Commands.AddTypeCommand […]

使用PowerShell获取图像的调色板

我正在尝试获取图像的Color Palette 。 我尝试了各种方法,现在我在PowerShell使用下面的代码,但是我无法得到正确的结果: $filename = "C:\Users\schoo\Desktop\bb.jpg" $BitMap = [System.Drawing.Bitmap]::FromFile((Get-Item $filename).fullname) Foreach($y in (1..($BitMap.Height-1))){ Foreach($x in (1..($BitMap.Width-1))){ $Pixel = $BitMap.GetPixel($X,$Y) $BackGround = $Pixel.Name } $R = $Pixel | select -ExpandProperty R $G = $Pixel | select -ExpandProperty G $B = $Pixel | select -ExpandProperty B $A = $Pixel | select -ExpandProperty A $allClr = "$R" […]

Powershell:捕获标准和过程对象的错误

我想从powershell启动一个Java程序,并获得打印在控制台上的结果。 我遵循这个问题的说明: 捕获标准输出和错误与启动过程 但对我来说,这不像我所期望的那样。 我做错了什么? 这是脚本: $psi = New-object System.Diagnostics.ProcessStartInfo $psi.CreateNoWindow = $true $psi.UseShellExecute = $false $psi.RedirectStandardOutput = $true $psi.RedirectStandardError = $true $psi.FileName = 'java.exe' $psi.Arguments = @("-jar","tools\compiler.jar","–compilation_level", "ADVANCED_OPTIMIZATIONS", "–js", $BuildFile, "–js_output_file", $BuildMinFile) $process = New-Object System.Diagnostics.Process $process.StartInfo = $psi $process.Start() | Out-Null $process.WaitForExit() $output = $process.StandardOutput.ReadToEnd() $output $ outputvariables总是空的(当然没有任何东西被打印在控制台上)。

Powershell:空文件总是生成(Compare-Object的输出)

这个问题最stream行的答案涉及以下Windows PowerShell代码(编辑修复一个错误): $file1 = Get-Content C:\temp\file1.txt $file2 = Get-Content C:\temp\file2.txt $Diff = Compare-Object $File1 $File2 $LeftSide = ($Diff | Where-Object {$_.SideIndicator -eq '<='}).InputObject $LeftSide | Set-Content C:\temp\file3.txt 我总是得到一个零字节文件作为输出,即使我删除$ Diff线。 为什么输出文件始终为空,如何解决?

如何pipe理批处理脚本输出到PowerShell脚本?

我需要使用HTTP Apachepipe道日志logging将响应代码“400”的所有条目放到单独的文件中。 为此,我想使用PowerShell Select-String因为它是Linux中最接近grep命令: 我有以下批处理从cmd环境中调用PowerShell脚本: powershell -command "& { sls ,400, 'cmd -ca | select -exp line >> access_400.log }" 据我所知,httpd中的“CustomLog”类似于这个: CustomLog "| 'call_powershell_script_that_will_extract_400_entries.ps1' " common 如何将CustomLog的pipe道输出input到将使用“400”响应代码提取条目的PowerShell脚本?

如果在使用正则expression式的开始词之前出现closures词,则在两个词之间find不匹配的词

所以,在通过日志时,我遇到了一个正则expression式困境。 我目前的正则expression式是这样设置的: (?si)\bStart\b(.*?)\bError\b(.*?)\bEnd\b 当我遇到像这样的场景时,这很好用: stuff happens Start stuff happens Error stuff happens End 但是也是这样的,如果错误在开始和结束序列之外, Start End Error Start End 有没有办法让正则expression式只抓取#1是像#2场景的存在? 有时在日志中生成的错误不会发生在Start和End关键字内。 基本上,我需要隔离没有唯一错误代码或名称的特定types的错误,只是在发生错误时将“错误”一词引发到日志中。 就使用的语言而言,并不重要。 AutoIt或Powershell的例子会很酷,但这更像是一个正则expression式的语法问题。 但是,这是在Windows环境中使用(特别是8.1)

我如何使用Powershell作为我的tramp-encoding-shell?

首先我启动了eshell然后我input命令cd /plink:<user>@<host>:/home/ 那么我得到这个错误消息 Microsoft Windows [版本6.1.7601]版权所有(c)2009 Microsoft Corporation。 版权所有。 命令提示符已被pipe理员禁用。 按任意键继续 。 。 。 我试图连接plink(这是我的path),也通过*消息*缓冲区后,我发现这一点。 找不到本地shell提示符(C:\ Windows \ system32 \ cmd.exe) 我90%确定这是因为cmd已经在我的机器上被禁用了,因为当我在另一台计算机上尝试相同的设置时,我知道cmd已经启用,一切正常。 我已经修改我的.emacs文件 (require 'tramp) (set 'tramp-encoding-shell "C:/Windows/System32/WindowsPowershell/v1.0/powershell.exe") (set 'tramp-encoding-command-switch "-Command") 我得到了不同的结果,但结果似乎是乱七八糟的废话(第三行看起来可能是一个提示, \和>字符在正确的地方…)。 我设法findtramp-encoding-shell的相当好的描述 ,还有一个相关的SO问题 ,这里是github上的tramp-encoding-shell 源文件 。 更新 这里是我的屏幕看起来像试图不成功打开一个PowerShell设置为tramp-encoding-shell的plink连接。

如何摆脱Batch / Powershell中的安全警告

我试图通过batch file执行PowerShell脚本,并不断得到以下警告; – >执行策略设置为远程签名; 我也testing与无限制,同样的错误显示; 如何摆脱这个?