Articles of PowerShell的

使用Windows命令行或Python查找具有模式的文本行

我需要运行一个命令行工具来validation一个文件并显示一堆关于它的信息。 我可以将这些信息导出到一个txt文件,但是它包含了很多额外的数据。 我只需要一行文件: “签名是时间戳:2012年5月24日星期四17:13:16” 时间可能会有所不同,但我只需要提取这些数据并将其放入一个文件。 有没有从命令行或Python可以做到这一点的好方法? 我打算使用Python来定位和下载要validation的文件,然后运行命令行工具进行validation,以便可以获取数据,然后通过电子邮件发送数据。 这是在Windows PC上。 谢谢你的帮助

$ LastExitCode = 0,但在PowerShell中$?= False。 将stderrredirect到stdout会导致NativeCommandError

为什么Powershell会在下面的第二个例子中显示出令人惊讶的行为? 首先,一个理智行为的例子: PS C:\> & cmd /c "echo Hello from standard error 1>&2"; echo "`$LastExitCode=$LastExitCode and `$?=$?" Hello from standard error $LastExitCode=0 and $?=True 没有惊喜。 我打印一条消息给标准错误(使用cmd的echo )。 我检查variables$? 和$LastExitCode 。 如预期的那样,它们分别等于“真”和“0”。 但是,如果我要求PowerShell通过第一个命令将标准错误redirect到标准输出,我得到一个NativeCommandError: PS C:\> & cmd /c "echo Hello from standard error 1>&2" 2>&1; echo "`$LastExitCode=$LastExitCode and `$?=$?" cmd.exe : Hello from standard error At […]

使用PowerShell重命名文件

我需要在Windows PowerShell中一次重命名一堆文件。 我在这里阅读HTG的文章,这有一点帮助。 我的问题是,它只会重命名目录顶部的文件,没有更深的。 例如:有FOLDER A,FOLDERA内部是文件和FOLDER B,FOLDER B内部是另一个文件。 两个文件夹和两个文件都需要重新命名。 现在它的工作方式是,文件夹A,文件夹A中的文件和文件夹B正在重命名,但不是文件夹B中的文件。 我目前的代码是: Dir | Rename-Item –NewName { $_.name –replace “ “,”_” } 谢谢您的帮助!

如何将unicode文件名批量转换为Ascii文件名Windows XP或PowerShell

问题:出于某种奇怪的原因, windows zip util不会压缩包含Unicode文件名的文件夹 。 所以,我需要将一大组文件名(不是内容)转换为ASCII文件名。 这里的答案讨论内容转换 如何批量/批量转换/重命名Windows CMD行或Power Shell中的文件名本身。 我不在乎输出文件的名字有多余1等 //While this changes the content inside the file. it does not rename my file name! COPY /Y UniHeader.txt Unicode_Output.txt CMD /U /C Type ANSI_Input.txt >> Unicode_Output.txt

从Powershell运行R脚本

在批处理脚本中,我可以使用以下语法运行R脚本: Rterm.exe –quiet –slave –vanilla < "C:\some_script.R" 但是,Powershell似乎已经为未来的扩展保留了“<”。 我想知道是否有一个直接的方法来运行另一个Powershell脚本中的R脚本。

Powershell – 本地凭证validation

我利用Powershell来检查本地pipe理员凭据作为这个片段的基础,并遇到问题。 (不想要threadjack) Add-Type -AssemblyName System.DirectoryServices.AccountManagement $pc = New-Object System.DirectoryServices.AccountManagement.PrincipalContext('machine',$entry) if($pc.ValidateCredentials("secretadmin", "secretpassword")){Write-host "good"}else{write-host "bad"} 它大约有百分之五十的时间。 剩下的时间,我得到这个 使用“2”参数调用“ValidateCredentials”exception:“不允许同一用户使用多个用户名与服务器或共享资源build立多个连接,断开以前与服务器或共享资源的所有连接,再试一次。 这让我想起使用net use的批处理脚本来validation我们只需要删除映射的驱动器来解决问题的凭据。 由于没有保存的对象,即时通讯知道,即时通讯不确定如何清除此login。 我检查login用户,什么都没看见 基本上,我们正在为医院build立数百台服务器,需要确保遵守政策,检查这些凭证只是其中的一部分,但这是我遇到的问题。 任何帮助将不胜感激。 在提出这些问题之前请注意一下。 凭据是正确的,他们在脚本中被硬编码,我可以收到失败,并立即通过RDP和psexeclogin相同的凭据引发错误。 防火墙允许任何从我的主机到目的地。

如何更改PowerShell中其他用户的特定registry设置

目标: 要在PowerShell中编辑特定用户的特定registry项设置,而不是其他人。 已知: 操作系统:Windows 8.1embedded式行业专业版(与Win 8.1相同,但具有一些embedded式function) 我可以通过打开REGEDIT,selectHKU,然后点击文件菜单,单击加载configuration单元,导航到用户的configuration文件目录,例如:c:\ users \ MrEd,然后在出现提示时input'ntuser .dat' – 导入HKEY_CURRENT_USER。 Hive将被装入HKU,您可以浏览并进行必要的修改。 概要: 我有一个powershell脚本返回特定用户的SID,但是当在registryconfiguration单元的上下文中使用时,configuration单元“没有find” – 所以我猜我一定是错过了一个步骤? 如何从Powershell“加载configuration单元”? 还是我错过了一个特殊的,神奇的山羊内脏键盘上的咒语? Param( [string]$user= $null ) Function GetSIDfromAcctName() { Param( [Parameter(mandatory=$true)]$userName ) $myacct = Get-WmiObject Win32_UserAccount -filter "Name='$userName'" return $myacct.sid } if($user) { $sid = GetSIDfromAcctName $user New-PSDrive HKU Registry HKEY_USERS $myHiveEntry = Get-Item "HKU:\${sid}" Write-Host "Key:[$myHiveEntry]" […]

Windows PowerShell中的PerlIO和CMD.exe

显然,我有一个Perl脚本的结果在两个不同的输出文件,这取决于我是否在Windows PowerShell或cmd.exe下运行它。 脚本可以在这个问题的底部find。 文件句柄用IO::File打开,我相信PerlIO正在做一些棘手的事情。 看起来好像在cmd.exe下select的编码是更紧凑的编码(4.09 KB),相比PowerShell生成的文件几乎两倍的大小(8.19 KB)。 该脚本需要一个shell脚本并生成一个Windowsbatch file。 看起来像在cmd.exe下生成的只是常规的ASCII(1字节字符),而另一个似乎是UTF-16(前两个字节FF FE ) 有人可以validation并解释为什么PerlIO在Windows Powershell下的工作方式与cmd.exe不同? 另外,如何使用IO::File显式获取ASCII-magic PerlIO文件句柄? 目前,只有使用cmd.exe生成的文件是可执行的。 UTF-16 .bat (我认为是编码)不能由PowerShell或cmd.exe执行。 顺便说一句,我们使用Perl 5.12.1 MSWin32 #!/usr/bin/env perl use strict; use warnings; use File::Spec; use IO::File; use IO::Dir; use feature ':5.10'; my $bash_ftp_script = File::Spec->catfile( 'bin', 'dm-ftp-push' ); my $fh = IO::File->new( $bash_ftp_script, 'r' ) or die $!; […]

在.BATch文件中将一个小的PS脚本转换成一个长行

我从这个问题的答案中得到了这个PowerShell代码; 它显示PS代码运行的cmd.exe窗口的位置/尺寸: $WindowFunction,$RectangleStruct = Add-Type -MemberDefinition @' [DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect); [StructLayout(LayoutKind.Sequential)] public struct RECT { public int Left; public int Top; public int Right; public int Bottom; } '@ -Name "type$([guid]::NewGuid() -replace '-')" -PassThru $MyWindowHandle = (Get-Process -Id (Get-WmiObject Win32_Process -Filter "ProcessId=$PID").ParentProcessId).MainWindowHandle $WindowRect […]

在PowerShell中启动一个独立的后台进程

我有一个Java程序,我想从PowerShell脚本作为后台进程启动,类似于守护进程在Linux上运行的方式。 PowerShell脚本需要做几件事情: 在后台运行该程序作为一个单独的和分离的进程,这意味着父窗口可以closures,进程继续运行。 将程序的标准输出和标准错误redirect到文件。 将后台进程的PID保存到一个文件,以便以后可以用另一个脚本来终止。 我在Linux上有一个shell脚本来启动程序,如下所示: $ java -jar MyProgram.jar >console.out 2>console.err & 我希望使用PowerShell脚本在Windows上复制相同的行为。 我已经尝试使用Start-Process与各种组合的选项,以及创buildSystem.Diagnostics.ProcessStartInfo和System.Diagnostics.Process对象,但到目前为止,我没有任何运气。 PowerShell作为后台进程启动程序,但是当启动PowerShell会话的DOS窗口closures时,程序突然终止。 我希望它在后台启动,并独立于启动它的命令窗口。 输出redirect也很麻烦,因为输出和错误stream似乎只能在正在同一窗口中运行的进程中redirect(例如,使用-NoNewWindow )。 在PowerShell中这种事情是可能的吗?