Tag: powershell

如何运行PowerShell脚本?

我如何运行PowerShell脚本? 我有一个名为myscript.ps1的脚本 我有所有必要的框架安装 我设置了执行策略的东西 我已经按照这个MSDN帮助页面上的说明,并试图像这样运行它: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1' (with或withot –noexit) 除了输出文件名外,它什么也没有返回。 没有错误,没有消息,什么都没有。 哦,当我添加-noexit ,同样的事情发生,但我仍然在PowerShell中,必须手动退出。 ps1文件应该运行一个程序,并返回与该程序的输出有关的错误级别。 但我很确定我还没有到达那里。 我究竟做错了什么?

如何在PowerShell中注释掉代码?

如何在PowerShell(1.0或2.0)中注释掉代码?

如何将parameter passing给PowerShell脚本?

有一个名为itunesForward.ps1的PowerShell脚本,使iTunes快速前进30秒: $iTunes = New-Object -ComObject iTunes.Application if ($iTunes.playerstate -eq 1) { $iTunes.PlayerPosition = $iTunes.PlayerPosition + 30 } 它使用提示行命令执行: powershell.exe itunesForward.ps1 是否有可能从命令行传递参数,并将其应用于脚本而不是硬编码的30秒值?

括号Powershell函数

如何使用带括号的PowerShell中的参数调用函数。 我以这个function为例 function Greet([string]$name , [int]$times) { for ([int]$i = 1; $i -le $times;$i++) { Write-Host Hiiii $name } } 如果我使用Greet Ricardo 5或Greet "Ricardo" 5作品调用函数。 但是当我使用Greet ("Ricardo",5)或者Greet("Ricardo" ; 5)它失败了。 哪里不对?

将Unicode字符打印到PowerShell提示符

我试图设置Mercurial来打印出当前使用PowerShell的存储库的状态。 到目前为止,我有一切工作,但我希望能够打印'☿'到当我在一个存储库的提示。 不幸的是,似乎PowerShell在打印Unicode字符时遇到了一些问题。 在接受的答案是否有一个Windows命令shell将显示Unicode字符? build议Windows 7(我正在使用)附带的PowerShell v2将能够打印Unicode字符,但我似乎无法得到它的工作。 同样,使用chcp 65001的下一个答案也不起作用。 这仍然是PowerShell的一个缺陷,还是我错过了一些明显的东西?

PowerShell和-contains运算符

考虑下面的代码片段: "12-18" -Contains "-" 你会认为这是true ,但事实并非如此。 相反,这将评估为false 。 我不知道为什么会发生这种情况,但确实如此。 为了避免这种情况,你可以使用它来代替: "12-18".Contains("-") 现在expression式将评估为true。 为什么第一个代码片段的行为如此? 有没有什么特别的东西-那和-Contains打得不好? 文档没有提到任何关于它的事情。

获取远程registry值

我有下面的脚本,我希望它出去多个服务器,并获得registry的价值。 不幸的是,它目前只是发回我正在运行脚本的机器的本地registry值。 我如何让脚本运行远程registry? 脚本: clear #$ErrorActionPreference = "silentlycontinue" $Logfile = "C:\temp\NEWnetbackup_version.log" Function LogWrite { param([string]$logstring) Add-Content $Logfile -Value $logstring } $computer = Get-Content -Path c:\temp\netbackup_servers1.txt foreach ($computer1 in $computer){ $Service = Get-WmiObject Win32_Service -Filter "Name = 'NetBackup Client Service'" -ComputerName $computer1 if (test-connection $computer1 -quiet) { $NetbackupVersion1 = $(Get-ItemProperty hklm:\SOFTWARE\Veritas\NetBackup\CurrentVersion).PackageVersion if($Service.state -eq 'Running') { LogWrite […]

Powershell使用嵌套引号调用msbuild

使用Powershell和Psake为Visual Studio解决scheme创build包和部署。 尝试使用msbuild部署数据库项目 – 这是使用msdos visual studio命令行正确工作 msbuild /target:Deploy /p:UseSandboxSettings=false /p:TargetConnectionString="aConnectionWithSpacesAndSemiColons" "aDatabaseProjectPathWithSpaces" 从powershell中调用相同的方法调用会导致错误 & msbuild /target:Deploy /p:UseSandboxSettings=false /p:TargetConnectionString="aConnectionWithSpacesAndSemiColons" "aDatabaseProjectPathWithSpaces" 与空间有关 – 无法弄清楚如何在PowerShell中复制这个调用 – 示例数据库连接string数据源=。\ SQL2008;初始目录= DocumentExecution;集成安全性= True;

如何使用PowerShellreplace文件中的多个string

我正在编写一个用于定制configuration文件的脚本。 我想在这个文件中replace多个string的实例,我尝试使用PowerShell来完成这个工作。 它适用于单个replace,但是多次replace非常缓慢,因为每次都需要再次parsing整个文件,而且这个文件非常大。 该脚本如下所示: $original_file = 'path\filename.abc' $destination_file = 'path\filename.abc.new' (Get-Content $original_file) | Foreach-Object { $_ -replace 'something1', 'something1new' } | Set-Content $destination_file 我想要这样的东西,但我不知道该怎么写: $original_file = 'path\filename.abc' $destination_file = 'path\filename.abc.new' (Get-Content $original_file) | Foreach-Object { $_ -replace 'something1', 'something1aa' $_ -replace 'something2', 'something2bb' $_ -replace 'something3', 'something3cc' $_ -replace 'something4', 'something4dd' $_ -replace 'something5', 'something5dsf' […]

如何使用Invoke-Command cmdlet传递variables?

我必须从某些服务器获取事件日志,而且我不想读取每个find的服务器的凭据。 我试图通过使用ArgumentListparameter passing我的variables,但我不工作。 这是我的代码: $User = Read-Host -Prompt "Enter Username" $Password = Read-Host -Prompt "Enter Password" -AsSecureString $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password) $UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) Get-ADComputer -Filter "OperatingSystem -Like '*Server*'" | Sort-Object Name | ForEach-Object{ if($_.Name -like '*2008*'){ Invoke-Command -ComputerName $_.Name -ArgumentList $User, $UnsecurePassword -ScriptBlock { net use P: \\Server\dir1\dir2 /persistent:no /user:$User $UnsecurePassword Get-EventLog -LogName System -After […]