Articles of PowerShell的

如何检查远程服务器上是否使用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 […]

通过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转储的老式的方式?