Articles of PowerShell的

Powershell源替代命令

所以我更熟悉了 资源 在Linux中的命令。 通常要设置我的环境variables,我会运行以下命令。 源.env 与.env是一个点文件。 如何在Powershell中执行此命令?

PowerShell – If / Else语句无法正常工作

首先,我非常抱歉,冗长冗长的post。 这是一个有趣的问题,我想尽可能详细。 我试着通过网站上的任何相关的PowerShell职位,但我找不到任何帮助我解决这个问题。 我一直在与PowerShell脚本一起工作,可以将Wake-On-Lan数据包发送到一组计算机上。 它通过读取具有两列主机名和MAC的.csv文件来工作,然后为每台计算机创buildWOL数据包并在networking上广播它们。 WOL数据包发送后,等待一分钟,然后ping电脑,以确认他们在线,如果有任何不响应将显示一个窗口,哪些机器没有响应一个ping。 直到最后的If / Else语句正常工作,所以我不会在脚本的那部分上做太多的细节(当然,如果你想要/需要更多的细节,请随时询问)。 我遇到的问题是最后的If / Else声明。 脚本应该工作的方式是在脚本中间的ForEach循环中,根据计算机是否响应ping,variables$ PingResult的值是true或false。 如果ping失败,则$ PingResult为$ false,然后将主机名添加到$ PingResult2variables。 理论上,如果所有的机器都响应,那么If语句会触发,消息框会显示它是成功的,然后脚本停止。 如果有任何机器没有响应,则运行Else语句,它将$ PingResult2variables中的所有项目连接在一起,并在窗口中显示列表。 实际情况是,即使所有机器都响应ping,If语句也会被完全跳过,而Else语句会运行。 但是,在这一点上,$ PingResult2variables是空的,因此它不显示任何计算机名称,无法响应的机器。 在我的testing中,我从来没有见过脚本无法唤醒计算机的情况(假设它被插入等),但是Else语句仍然运行。 在运行Else语句的情况下,我已经检查了$ PingResult2variables的值,并确认它是空的,input$ PingResult2 -eq“”返回$ true。 要添加另一个皱纹的问题,我想返回到$ PingResult2variables。 我必须创buildvariables作为通用列表,以便它将支持Add方法,以允许variables根据需要增长。 作为一个testing,我们通过使用+ =操作符来修改脚本来将结果连接在一起,而不是使$ PingResult2成为一个列表,而在机器出现故障的情况下,在最终的显示窗口中没有给出可读的可视结果。实际上偶尔工作。 如果所有计算机成功响应,If语句将按预期方式运行并显示成功消息。 就像我说的那样,有时候会有效果,有时候不会,其他的改变都不会对结果产生影响。 我们尝试的另外一件事是将所有对Visual Basic程序集和其他GUI元素(除了Out-GridView窗口)的引用都删除,这也不起作用。 任何想法是什么可能导致这个问题? 我和我的团队在这一点上完全没有想法,我们很想知道是什么原因造成了这个问题。 我们已经在Windows 7,8.1以及Windows 10的最新预览版上尝试过了,但没有成功。 预先感谢您的帮助。 PS额外的布朗尼点,如果你可以解释什么29线正则expression式被称为以及如何确切的工作。 我在一个网页上发现了这个问题,解决了在每两个字符之间添加冒号的问题,但是这个post并没有解释它被称为什么。 (原文链接http://powershell.org/wp/forums/topic/add-colon-between-every-2-characters/ ) 原WOL脚本,我们build立的脚本的其余部分是由约翰·萨维尔(链接http://windowsitpro.com/networking/q-how-can-i-easily-send-magic-packet-wake-machine-my-subnet ) 脚本 Add-Type -AssemblyName […]

在Windows 2012 R2中使用Powershell导入计划任务

我对Powershell脚本非常陌生,但是试图修改我在这里find的脚本,在Windows 2012 R2中使用Powershell导入一些XML Scheduled Tasks。 我已经成功地使用这个脚本将计划任务导入到根[Task Scheduler Library]中。 问题似乎是,计划任务需要导入到任务计划程序库下的子文件夹中,让我们说“SubTasks” $task_path = "C:\Users\me\Desktop\ST Testing\exported ST's\scheduledTask.xml" $task_user = "usr" $task_pass = "pwd" $schedule = new-object -com("Schedule.Service") $schedule.Connect("server") # servername #$folder = $schedule.GetFolder("\") <===This works fine $folder = $schedule.GetFolder("\SubTasks") #<===This does not work Write-Host $folder Get-Item $task_path | % { $task_name = $_.Name.Replace('.xml', '') $task_xml = Get-Content $_.FullName […]

psExec没有密码,但是空string到密码标记没有

我正在使用一个名为psExec的程序来远程连接到一台机器并启动一个交互式程序。 我要连接的机器没有密码。 所以如果我运行这个: psExec \\Computer_Name -u User -i -d calc.exe 它提示我input密码: Password: 我只是打入(因为电脑没有密码),它的工作原理。 我不想每次都进入,因为我正在写剧本。 所以我试过这个: psExec \\Computer_Name -u User -p -i -d calc.exe 和这个: psExec \\Computer_Name -u User -p"" -i -d calc.exe 和这个: psExec \\Computer_Name -u User -p'' -i -d calc.exe 和这个: psExec \\Computer_Name -u User -p "" -i -d calc.exe 和这个: psExec \\Computer_Name -u […]

如何获得远程用户会话映射的驱动器

我需要在远程会话上获得真正的映射驱动器,我读取path和名称的远程registry,但在\ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ MountPoints2中缺less标签(驱动器盘符) 如果我阅读HKCU \networking,我只有持久驱动器(GPP驱动器的状态replace丢失)。 我如何findpath,名称和标签? function get-Drives { param ( [ValidateNotNullOrEmpty()] $Computername, [ValidateNotNullOrEmpty()] $SID ) try { $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('USERS', $computerName) $RegKey = $Reg.OpenSubKey("$SID\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MountPoints2") $lecteurs = $RegKey.GetSubKeyNames() $lecteurs | ?{$_ -notlike '{*}'} | %{ $RegKey = $Reg.OpenSubKey("$SID\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MountPoints2\\$_") $_LabelFromReg = $regKey.GetValue('_LabelFromReg') if ($_LabelFromReg) { [pscustomobject]@{ Name […]

如何使用Get-Item:Set-Item和ExportTo-CliXml通过PowerShell迁移registry项

我试图导出各种软件应用程序的select性registry项,首选项和configuration,然后将它们导入到新机器上。 Get-ChildItem Registry::HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\OneNote -Recurse | Export-Clixml -Depth 3 -Path OneNote.xml 然后在不同的时间使用另一台机器上的这个过程 Import-CliXml -Path OneNote.xml | Set-Item 这似乎并没有工作,但这不是明显的原因。 从概念上讲,似乎像这样的东西应该工作。 理想的情况下,下一步将能够获得密钥,过滤它们并将它们全部存储在一个文件中,然后在另一台机器上干净地恢复它们。 这可以用registry编辑器完成,但我很好奇PowerShell是如何完成的。 如果它们不存在并创build它们的值,而不是创build它们的值,则Import-CliXml命令会在对应于该键的path的键中的默认属性名称下创build值。 例如: 在目标机器上,一个目标关键字如: HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\OneNote\OpenNoteBooks 现在将包含具有以下值的默认项目: "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\OneNote\OpenNoteBooks" 而不是来自源密钥的预期属性。 对于上下文来说,在基本的层面上,我想做的事情可以通过以下方式来完成: reg export HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\OneNote OneNote.reg 然后,创build一个包含键值的registry文件。 reg import OneNote.reg 在目标机器上加载它们。 显然这对于​​简单的“转储和恢复”操作来说很简单,但是如果希望先用某种逻辑来处理它们的键,那么它就不那么灵活了。

使用PowerShell中的New-SshSession远程login到Linux(使用私钥)

我试图使用下面列出的3个input的密钥从Windows PowerShelllogin到Linux服务器。 New-SshSession -ComputerName [name] Username- [user] -KeyFile [path] 我已经从同事那里发送了私钥的文本,需要知道如何实现。 将它保存在一个.ppk文件中没有任何结果。 为了响应上面的行,Powershell吐出了以下内容。 New-Object : Exception calling ".ctor" with "1" argument(s): "Invalid private key file." At C:\Windows\system32\WindowsPowerShell\v1.0\Modules\SSH-Sessions\SSH-Sessions.psm1:90 char:20 + $Key = New-Object Renci.SshNet.PrivateKeyFile( $Keyfile ) -ErrorActi … + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand 所以我想我需要知道如何保存我已经发送的string作为一个关键? 谢谢!

相当于Windows的Grep和尾巴组合

我尝试了一些不同的解决scheme,但没有任何工作。 我不使用批处理脚本,所以这对我来说是相当微不足道的。 现在,我在Linux中有一个脚本,以同步顺序处理服务的执行。 他们互相依赖,并要求另一个在被执行之前完全启动。 我正在使用下面的行来处理这个问题: grep -qi 'Service has started.\|error' <(tail -f "/opt/app/log/daemon.log") 很好用。 但是,这也需要在Windows中工作。 我研究过使用GNU utils,但是我没有真正考虑过他们的授权,这可能会造成问题。 另外,我想在Windows CL本地执行此操作。 干杯, 克里斯 PS 我正在寻找一个平台独立解决scheme。 Cygwin不是一个答案。

Windows CMD上的Gulp输出是不可读的

我最近开始使用windows cmd的gulp(也尝试使用powershell),并且输出的颜色是这样的:无论背景颜色是什么,某些单词永远不可见(有些单词用深色突出显示,其他单词用浅色突出显示)。 我search了所有的networking,但我的惊喜没有发现任何人有同样的问题。 下面是一个例子:

当声音输出停止时,使用Powershell自动点击鼠标?

是否可以编写一个检测系统音量级别的脚本,并在所有声音停止时启动自动鼠标点击?