Tag: powershell

什么是桌面path的环境variables?

我正在写一个Windowsbatch file,并希望将一些东西复制到桌面上。 我想我可以使用这个: %USERPROFILE%\桌面\ 但是,我在想,这可能只适用于英文操作系统。 有没有一种方法可以在batch file中执行此操作,该文件将适用于任何国际化版本? UPDATE 我试过下面的batch file: REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop FOR /F "usebackq tokens=3 skip=4" %%i in (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) DO SET DESKTOPDIR=%%i FOR /F "usebackq delims=" %%i in (`ECHO %DESKTOPDIR%`) DO SET DESKTOPDIR=%%i ECHO %DESKTOPDIR% 得到这个输出: S:\> REG QUERY“HKCU \ Software \ Microsoft […]

如何在Powershell中获取Parent的父目录?

所以如果我有一个目录存储在一个variables,说: $scriptPath = (Get-ScriptDirectory); 现在我想find两个父级别的目录。 我需要一个很好的方式来做: $parentPath = Split-Path -parent $scriptPath $rootPath = Split-Path -parent $parentPath 我可以在一行代码中访问rootPath吗?

PowerShell中的variables范围

PowerShell的一个令人伤心的事情是函数和脚本块是dynamic范围的。 但还有一件令我惊讶的事情是,variables在内部范围内performance为写入时拷贝(copy-on-write)。 $array=@("g") function foo() { $array += "h" Write-Host $array } & { $array +="s" Write-Host $array } foo Write-Host $array 输出是: gs gh g 这使得dynamic范围减less了一点痛苦。 但是,如何避免写入时复制?

PowerShell – 启动进程和Cmdline开关

我可以运行这个罚款: $msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" start-process $msbuild -wait 但是当我运行这个代码(下面),我得到一个错误: $msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /v:q /nologo" start-process $msbuild -wait 有没有一种方法,我可以传递参数到MSBuild使用启动过程? 我打开不使用启动过程,我使用它的唯一原因是我需要有“命令”作为variables。 当我有 C:\ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ MSBuild.exe / v:q / nologo 在一行本身,如何得到在Powershell中处理? 我应该使用某种types的eval()函数吗?

在PowerShell中从文件名中删除path和扩展名

我有一系列文件的完整path的string。 我想只保存文件名,没有文件扩展名和前导path。 所以从这个: c:\temp\myfile.txt 至 myfile 我实际上并没有遍历一个目录,在这种情况下,可以使用像powershell的basename属性,而是我单独处理string。

Powershell v3.0pipe道问题

我在使用这个命令时遇到了问题: gc .\domains.txt | Get-ADDomain 顾名思义,domains.txt包含要查询的Active Directory列表(所有域都在同一个林中)。 如果我在Windows 8机器上运行它,一切正常,我得到了预期的结果,而不是在Windows 2008 R2 SP1成员服务器(不是DC)与WMF 3.0我得到的结果只能从列表中的第一个域和其他: Get-ADDomain : A referral was returned from the server 如果我查询列表中的域名: Get-ADDomain <Domain name here> 它工作正常。 我的工作站 Microsoft Windows 8 Enterprise(6.2.9200)x64 PS D:\Tools\Powershell> $PSVersionTable Name Value —- —– PSVersion 3.0 WSManStackVersion 3.0 SerializationVersion 1.1.0.1 CLRVersion 4.0.30319.18010 BuildVersion 6.2.9200.16384 PSCompatibleVersions {1.0, 2.0, 3.0} PSRemotingProtocolVersion […]

是否有PowerShell语言参考手册?

我正在评估Windows PowerShell作为cmd.exe的替代品,用于命令行代码的基本过程自动化(例如安装,执行和大量Fortran作业的后处理)。我知道足够的perl和shell来实现我但我想保持在Windows工具链中,而不是需要在Perl,Python,Ruby,Cygwin等方面培训我的同事。我在一家工程公司工作,所以我们不需要为.NET开发.NET或广泛的框架。 简而言之:我们使用内部代码来处理很多数字,我需要一个合理的手段来自动执行重复的手动任务。 问题是我在评估语言时遇到了麻烦,因为我找不到PowerShell的简洁可打印语言参考手册, 是的,我已经看过微软的网站,但是(在2010年这个问题最初被问到的时候),它是如此的混乱和窒息,无关的信息是无法使用的。 谷歌往往指向我回到该网站,并没有非常有帮助。 以下是我感兴趣的一些主题(unix和Perl类似文件): 内在函数 基本testing/分支/循环function和stream量控制 variables的内在types(布尔值,整数,浮点数,string) 内部数据结构(标量,列表,关联数组,对象) 运营商和运营商优先 特定于任务自动化语言的function: 过程控制(exec,fork,wait,kill) 系统监控(ps,正常运行时间,lsof,fuser,netstat,df) 文件和目录处理(查找,定位,cd,mkdir,touch,rm,rmdir) I / O(pipe道,猫,三通,xargs,读,写,覆盖,追加,寻求) 文本处理函数(awk,sed,grep,split,join,cut,fmt,strings) 其他问题,我希望得到回答: PowerShell强types(char,string,int,long,float,double)还是弱types(variant)? 常用的数据结构是可用的(标量,列表,关联数组),它们是一stream的元素吗? 有没有图书馆或模块系统? 如果是这样,标准库中是什么? 如果我找不到我需要的东西,是否可以使用第三方库? 这是一种程序性的,function性的或面向对象的语言 – 或者说每种语言的程度如何? 什么是编码习惯? (Perl最佳实践) 是否有格式化的期望 – 面向行或自由格式? 空格还是大小写? 是否有字符集限制? 语言是“8位清洁”吗? 它是否支持UTF-8,Unicode等? 我非常有兴趣在RTFM中findM,但是请注意,我正处于评估阶段,因此微软出版社(Microsoft Press)的这篇文章已经下降了50美元左右(他们在2010年将成为编辑,印刷文档的主要来源)是一个非首发。

如何在使用New-WebAppPool时设置.NET Framework版本?

我正在查看如何使用IIS PowerShell Cmdlet New-WebAppPool来指定要使用的.NET Framework的版本。 目前,它默认为v2.0,但是我使用的是MVC,这是行不通的,因为这是v4.0的一个特性。 我们真的希望每个站点都拥有自己的应用程序池,因为无法通过脚本来configuration它们,所以我们似乎必须手动创build这些池。 有什么办法可以自动化吗? 恐怕答案将是“你不行”,因为文档似乎没有提供任何设置参数,而Google正在蹲下; 它给我的印象是只能以脚本方式设置网站是可以接受的,关于configuration应用程序池的事情只是“没有完成”。 我不可能想象为什么不能 – 如果你将过程的一个主要部分自动化,为什么不能自动化另一个主要部分呢? 任何人都可以通过PowerShell了解如何做到这一点,这将大大帮助我。

你能否再次删除PowerShell中的添加types?

我目前正在用C#编写一个库,并在某些场合使用PowerShell来快速testing它。 但是,这阻止了我重新构build项目,因为PowerShell显然仍然会打开DLL。 Add-Type后,有没有办法再次卸载DLL? 文档似乎没有线索,明显的候选人将是Remove-Type (这不存在 – 只有一个命令无论如何与Type作为它的名词)。 closuresPowerShell并执行导航到构build目录的所有内容,并在每次重新构build时重新添加types都变得非常麻烦。

如何将布尔值从命令提示符传递给PowerShell脚本

我必须从batch file中调用PowerShell脚本。 其中一个参数是一个布尔值: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -File .\RunScript.ps1 -Turn 1 -Unify $false 该命令失败,出现以下错误: Cannot process argument transformation on parameter 'Unify'. Cannot convert value "System.String" to type "System.Boolean", parameters of this type only accept booleans or numbers, use $true, $false, 1 or 0 instead. At line:0 char:1 + <<<< <br/> + CategoryInfo : InvalidData: (:) [RunScript.ps1], ParentContainsErrorRecordException […]