Articles of PowerShell的

在每个目录上执行相同的脚本

我有这个奇妙的脚本: gci -Recurse| where {$_.LastWriteTime -gt (Get-Date).AddDays(-45)}| group Extension -NoElement 输出是: 4352 .JPG 2352 .doc 2135 .pdf 1811 .xls 1472 857 .pub 732 .xlsx 565 .docx 66 .rtf 64 .lnk 63 .ppt 61 .url 41 .png 38 .xml 28 .htm 27 .msg 我想要的是同一个脚本在当前目录的每个目录上运行(非recursion)。 例如,如果我在目录c:\test ,并且该目录作为文件夹alex , liza和harry ,那么我希望将这个脚本应用于c:\test\alex , c:\test\liza , c:\test\harry 我想要的输出是: 4352 .JPG […]

如何检查远程服务器上是否使用batch file打开端口,而不使用第三方软件?

由于这个问题是closures的(我打算先回答),我打开了这个问题。 在某些机器上,它被禁止安装/下载二进制文件,所以我想知道如何检查远程机器上的端口是否仅使用本机窗口脚本function打开。

Set-ItemProperty将registry值设置为string而不是DWord,为什么?

我尝试使用PowerShell中的Set-ItemProperty创build一个项目,该项目适用于大多数系统: New-PSDrive -name HKCR -PSProvider Registry -root HKEY_CLASSES_ROOT Set-ItemProperty -Path HKCR:\Software\MyCompany\ -Name Level -Value 5 -ErrorAction SilentlyContinue 这在大多数Windows 7系统上创build了一个DWORD值,但是我发现一个系统创build了一个STRING值,我想知道:为什么? 会发生什么系统的行为有所不同? 所有没有已经设置的值,都使用相同的基础镜像使用相同的Powershell版本。 顺便说一句,我发现通过使用下面的代码,我可以明确地设置一个types,所以我已经解决了这个问题: New-ItemProperty -Path HKCR:\Software\MyCompany\ -Name Level -Value 5 -ErrorAction SilentlyContinue -PropertyType DWord 但只是为了好奇,我想知道为什么系统的行为有所不同。

PowerShell脚本获取目录总大小

我需要recursion地获取一个目录的大小。 我必须每个月都这样做,所以我想制作一个PowerShell脚本来完成它。 我该怎么做?

Bash'printf'相当于命令提示符?

我正在寻求在Windows的命令提示符pipe一些stringinput到一个小型的C程序。 在bash中我可以使用 $ printf "AAAAA\x86\x08\x04\xed" | ./program 本质上,我需要在命令提示符下转义那些hex数字。 在命令提示符/ PowerShell中是否有相当于或类似的printf命令? 谢谢

robocopy MAXAGE / MINAGE值,小时和分钟

我正在尝试将文件从服务器复制到另一台服务器,每小时创build一个文件。 我正在使用Robocopy来复制文件,而且非常有用。 但现在我真的坚持这一点。 我需要用分钟的MINAGE值复制文件,就像那样。 如果在下午2点之后运行robocopy,我应该只能复制2PM之前创build的文件 Robocopy MAXAGE和MINAGE只接受date而不是时间。 任何build议

标签和图片框位置碰撞

根据第一个问题,我遇到了另一个问题: 标签隐藏在PowerShell中使用Windows窗体中的PictureBox我创build下一个问题,解决它。 问题是我使用了两个不同的控件( PictureBox和Label ),我无法将PictureBox放在窗体的右上angular,而没有以表单为中心的标签的问题。 图像声明 $Image = [system.drawing.image]::FromFile("C:\xxx.png") $pictureBox = new-object Windows.Forms.PictureBox $pictureBox.Dock = [System.Windows.Forms.DockStyle]::Right $pictureBox.BackColor = "Transparent" $pictureBox.AutoSize = $True $pictureBox.Image=$Image $Form.Controls.Add($pictureBox) $pictureBox.SendToBack() 标签声明 $redLabel1 = New-Object System.Windows.Forms.Label $redLabel1.Location = New-Object System.Drawing.Size($Form.Width, $Form.Height) $redLabel1.AutoSize = $False $redLabel1.TextAlign = "MiddleCenter" $redLabel1.Dock = "Fill" $redLabel1.Text = "Something" $redLabel1.ForeColor = "Red" $redLabel1.BackColor = "Transparent" $Font = […]

通过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 […]