Articles of PowerShell的

将可能包含非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来确定安装是成功还是失败。 在开始下一步之前,有没有办法让安装等待呢?

Powershell – 查询远程registry键值并生成文本文件IF值等于1

第一次发布。 彻底享受网站和所有停止帮助的人才。 我已经把PowerShell的一些function放在一起,远程查询存储在.csv文件中的计算机列表,查找registry值。 如果registry项的值等于'1',那么脚本应该使用机器的名称作为文本文件的名称创build一个文本文件。 一切都很好。 脚本运行愉快没有任何错误。 问题是,当我返回并远程检查目标registry值时,我发现该值不是1.该脚本只是为.csv中的每一行创build一个文件。 我究竟做错了什么? 编辑***我发现了一个问题,我在registrypath的$ keyvariables中input错误。 7/17/2013 2:21p $File = Import-Csv 'c:\temp\machines.csv' foreach ($line in $file) { $machinename = $line.machinename trap [Exception] {continue} $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",$MachineName) $key = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\WinLogon" $regkey = "" $regkey = $reg.opensubkey($key) $keyValue = "" $keyValue = $regKey.GetValue('AutoAdminLogon') if ($keyValue = "1") { try { $textFile = […]

缺less参数-m在Windows PowerShell中使用svn

我试图在Windows PowerShell中运行这个: svn ci -m "" directory_name 但是它返回: svn:E205005:日志消息是一个path名(是-F意向?); 使用'–force-log'来覆盖 我试图cd目录并提交没有directory_name参数,它回退: svn ci -m "" svn.exe:缺less参数:m 我认为,PowerShell可能不理解,但很less(对我来说)这个作品: svn -h 难道我做错了什么? 所有这些在CMD完美的作品:/

Powershell“启动过程”不按计划任务运行

有两个PowerShell脚本,我编辑从XP运行在Win Server 2K8 R2。 它们在通过手动方式在PowerShell中执行时运行良好,但如果按照域pipe理员的计划和运行,它们将执行所有文件操作; 除非他们不做一个启动进程,将文件发送到它需要去的SFTP站点。 它们是通过运行带有参数的powershell.exe启动的: -noprofile -ExecutionPolicy Bypass -file C:\Users\administrator\Documents\script1.ps1 同样,就像我之前提到的那样,它们运行良好,并按照要求start-process ,如果您手动运行它们,并且只在计划时运行文件操作并跳过启动进程。 start-process如下: start-process -FilePath "c:\Program Files (x86)\Tumbleweed\STClient\stclient.exe" -ArgumentList "httpsu://www.securesiteexample.org/incoming/ $filename /prefNoAskSched /hidden /log /Remote-Site return /quitWhenDone" 我错过了什么?

Findstr总是无法在文本文件中find哈希string

我想要replace某个.jar文件,如果该文件的MD5哈希值更改。 我已经编写了一个小的PowerShell脚本来完成文件的散列操作,并且.ps1脚本通过batch file运行。 PowerShell打印哈希到1.txt我希望批处理脚本检查文本文件的正确散列,如果哈希是不同的,它会覆盖旧版本的文件。 文件的replace还没有实现,但一旦findstr问题解决了。 @echo off setlocal EnableDelayedExpansion :a powershell.exe -ExecutionPolicy ByPass -file powershellmd5.ps1 findstr /c:"ff b1 b9 2d b1 03 db 59 3f 9e ca 51 f0 14 67 62 ca a8 d7 7d" "1.txt" echo !errorlevel! timeout /t 10 /NOBREAK goto a 哈希完成时,以下是1.txt的内容: 文件license.jar的SHA1哈希值: ff b1 b9 2d b1 03 db 59 […]

通过Powershell或Batch将文件从Windows转换到UNIX

我有一个批处理脚本,提示用户input一些input,然后输出我在AIX环境中使用的几个文件。 这些文件需要在UNIX格式(我相信是UTF8),但我正在寻找一个方向,以最简单的方式做到这一点。 我不喜欢下载额外的软件包; Cygwin或GnuWin32。 我不介意编码,如果可能的话,我的编码选项是批处理,Powershell和VBS。 有谁知道一个办法做到这一点? 或者,我可以使用批处理创build文件并调用Powershell脚本来重新创build这些文件? 这里的想法是一个用户会被提示input一些信息,然后输出一个标准文件,这些文件在AIX中基本上是一个工作的快速答案。 我最初使用批处理,因为我不知道我会遇到这个问题,但我有点倾向于在Powershell中重做这个。 因为我在另一个可以进行转换的论坛上find了一些代码(下面)。 % foreach($i in ls -name DIR/*.txt) { \ get-content DIR/$i | \ out-file -encoding utf8 -filepath DIR2/$i \ } 寻找一些方向或在这方面的一些input。

使用当前Powershell凭据进行远程调用

我有一个Powershell脚本,用于远程调用其他服务器上的其他Powershell脚本。 该脚本用于closures并启动不同服务器上的服务。 Powershell脚本的设置方式是,我所要做的就是通过调用serverStartStop [START|STOP]调用它,并自动并有条不紊地将其serverStartStop [START|STOP]到服务器列表,并closures每个服务器上的服务列表。 我最近升级了系统,需要启动一些服务后运行批处理脚本。 我可以远程调用批处理脚本,但批处理脚本会调用另一个尝试访问networking上共享的命令。 该命令失败,因为用于调用该命令的用户没有足够的权限访问该共享。 我已经尝试了几件事情来解决这种情况,并对Powershell中的Invoke-Command行和Windows Batch的runas命令进行了一些研究。 runas命令要求input用户密码,这是不可接受的,因为这是一个自动脚本。 有没有人有任何想法,我可以做这个工作干净,没有用户的互动,而不是做初步的START或STOP呼叫?