Articles of PowerShell的

Powershell使用ScheduledJob在启动时使用pipe理权限运行作业

为了减轻我的一些工作,我创build了一个PowerShell脚本,它需要: 在启动时运行。 使用pipe理员权限运行,因为它必须写在c:\ program files文件夹中。 我使用PowerShell创build启动服务,如下所示: function MakeStartupService { Write-Host "Adding script as a startup service" $trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:15 Try { Register-ScheduledJob -Trigger $trigger -FilePath "absolute_path" -Name "Job-name" -EA Stop } Catch [system.exception] { Write-Host "Looks like an existing startup service exists for the same. Overwriting existing job" Unregister-ScheduledJob "Job-name" Register-ScheduledJob -Trigger […]

使用PowerShell每x秒运行一个batch file

我想使用一个Windows PowerShell脚本运行一个batch file每隔x秒钟。 所以这是同一batch file一遍又一遍的运行。 我做了一些看,但找不到我在找什么。 这是我想要在Windows XP机器上运行的东西。 我曾经使用Windows调度器很多次类似的,但由于某种原因Windows调度程序只运行一次…然后没有更多。 我也不想让batch file自己调用,因为在运行这么多次之后会出错。

确定窗口是否正在播放声音

所以我一直在思考这个问题一段时间,我不知道什么是正确的方式去做这件事。 我想确定Windows是否在某个时间使用Powershell脚本输出声音。 我可以确定audio驱动程序是否有错误,但我不能确定系统是否在播放声音。 我看了一下System.Media的.NET类,里面的三个类都和播放声音或操作系统声音有关。 我不是要求为我写的代码,我只需要知道从哪里开始检查Windows系统是否正在播放声音。 我有一个声音监视器,它不断监视Node.js平台上的声音,当它失去声音时,它会发送给我一个文本。 那么,我也希望它能够通过它所连接的所有系统,看看故障在哪里。 这就是为什么我想看看Windows电脑是否在播放声音。

如何从PowerShell 1.0调用DLL方法

我正在使用PowerShell V1.0脚本从DLL文件中调用方法,并使用以下代码将DLL文件加载到PowerShell中。 [System.Reflection.Assembly]::LoadFile("path of dll") is loaded successfully GAC Version Location — ——- ——– False v2.0.50727 location of dll 该类包含一个公共的默认构造函数。 我试着用下面的代码创build一个类的对象: $obj = new-object namespce.classname 它会抛出以下错误: New-Object:使用“0”参数调用“.ctor”的exception:“namespce.classname的types初始值设定项引发exception。 在线:1 char:18 + $ obj = new-object <<<< namespce.classname + CategoryInfo:InvalidOperation:(:) [New-Object],MethodInvocationException + FullyQualifiedErrorId:ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand` 当我试图在不创build对象的情况下调用类的方法时,即使类包含方法,也会抛出下面的错误: PS C:\Windows\system32> [namespace.classname]::method() Method invocation failed because [namespace.classname] doesn't contain a method named […]

Powershell,如何获取最新的Windows更新date安装或至less检查更新?

我试图find一种方法来检索最后的Windows更新被安装,或检查的date/时间。 到目前为止,我已经find了一个允许列出最近的Windows更新的函数,但是对于这样一个简单的函数来说,数据太多了,而且太臃肿了。 其次,我试图访问registry,虽然我没有运气在回顾我所追求的价值。 我正在Windows 10计算机上进行testing,但该软件可能驻留在Windows Server 2012 R2上。 这里是我尝试过的一些代码的例子: $key = “SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Install” $keytype = [Microsoft.Win32.RegistryHive]::LocalMachine $RemoteBase = [Microsoft.Win32.RegistryKey]::OpenBaseKey($keytype,"My Machine") $regKey = $RemoteBase.OpenSubKey($key) $KeyValue = $regkey.GetValue(”LastSuccessTime”) $System = (Get-Date -Format "yyyy-MM-dd hh:mm:ss") 另外,只要尝试Get-ChildItem $hello = Get-ChildItem -Path “hkcu:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\” foreach ($a in $hello) { $a } 我检查了registry,这个键不存在。 去“Windows更新”path只显示应用程序更新,而不是Windows更新。 编辑我似乎更接近我的目标:Get-HotFix | 其中{$ _。InstallDate -gt 30} 但是,我怎样才能回收在过去30天安装的那些? 这并不显示很多结果,即使使用Select […]

VMWare VMDK映射到Windows驱动器号

这个代码几乎可以工作,它将VWare VMDK映射到Windows驱动器。 代码不是我的。 在其他信息将返回“ DD-SERV-01_15.vmdk VM MAIN是驱动器号G: ” 脚本将提示input凭据,然后进行映射,但出现错误,只有最后一个虚拟机/驱动器被保存为输出 – 我希望有人可以看一下,更新/修复代码,以便它保存所有的输出吗? 谢谢。 #Get VMware Disk Usage # Created by Hugo Peeters # http://www.peetersonline.nl # VARIABLES $Decimals = 1 $VCServer = "SERVERNAME" # SCRIPT # Connect to VC Write-Progress "Gathering Information" "Connecting to Virtual Center" -Id 0 $VC = Connect-VIServer $VCServer # Create Output Collection $myCol […]

将可能包含非ASCII字符的poweshell输出解码为一个pythonstring

我需要解码从python调用powershell标准输出到一个pythonstring。 我的最终目标是获取一个string列表的forms在Windows中的networking适配器的名称。 我目前的function看起来像这样,并在Windows 10英语语言运行良好: def get_interfaces(): ps = subprocess.Popen(['powershell', 'Get-NetAdapter', '|', 'select Name', '|', 'fl'], stdout = subprocess.PIPE) stdout, stdin = ps.communicate(timeout = 10) interfaces = [] for i in stdout.split(b'\r\n'): if not i.strip(): continue if i.find(b':')<0: continue name, value = [ j.strip() for j in i.split(b':') ] if name == b'Name': interfaces.append(value.decode('ascii')) # This […]

如何在特殊的PowerShell链命令4命令提示符?

通常,PowerShell命令可以用分号链接。 以下打开2个记事本: PS> notepad; notepad 你也可以链接一个更复杂的语句: PS> Add-Type -AssemblyName System.IO.Compression; ` > $src = "C:\aFolder"; $zip="C:\my.zip"; ` > [io.compression.zipfile]::CreateFromDirectory($src, $zip) 链式PowerShell命令也可以从CMD命令行调用: C:\> powershell notepad; notepad 本文描述了一个创build.Net 4.0 PowerShell提示符的方法,即使.Net 2.0是您的操作系统上的活动框架。 您创build一个.cmd脚本,并运行该脚本。 现在你在.Net 4.0环境中。 链接也适用于4.0提示: C:\> ps4.cmd PS> notepad; notepad 也可以从标准CMD提示符下运行: C:\> ps4 notepad; notepad 本文描述了一种将Add-Type到显式path名的方法(需要从ps4提示符引用4.0程序集): Add-Type -Path "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.IO.Compression.FileSystem\v4.0_4.0.0.0__b77a5c561934e089\System.IO.Compression.FileSystem.dll" 即使在ps4提示符处链接时,也是如此: C:\> ps4 PS> Add-Type -Path "C:\x\System.IO.Compression.FileSystem.dll"; ` […]

Powershell脚本默认不工作

所以我想开始写一个PowerShell脚本。 我想从小开始写简单的脚本,将本地文件夹作为驱动器。 很简单。 在使用旧的DOS命令工具之前,我已经完成了。 所以我想写的脚本是: subst d: G:\CER 好吧,所以我尝试通过按“Play”button(即F5)来执行Powershell ISE中的脚本。 那么我得到什么? 无法加载文件G:\ CER \ Make_Stage.ps1,因为在此系统上禁用了脚本的执行 。 请参阅“get-help about_signing”了解更多详情。 在行:0 char:0 这是多么愚蠢的是,开箱即用的PowerShell脚本执行被禁用 ! 即默认! 简直令人难以置信的是,默认情况下,这个新工具根本不起作用 Powershell必须是最愚蠢的脚本shell。 所以显然我必须注册一些东西(希望不是与MS)。 如果任何人有答案,如何解决这个问题,我会很感激。

有没有办法使PowerShell等待安装完成?

我有一个Windows软件包列表,我使用下面的命令通过PowerShell进行安装: & mypatch.exe /passive /norestart mypatch.exe正在从一个列表中传递,它不会等待之前的安装完成 – 它只是继续前进。 它构build了一个正在等待安装的巨大安装窗口。 另外,我不能使用$LASTEXITCODE来确定安装是成功还是失败。 在开始下一步之前,有没有办法让安装等待呢?