我在ITPro.tv上观看了关于PowerShell Desired State Configuration DSC的video。 他们介绍它,并有效地运行脚本。 不过,这也是他们第一次(真正)引入了脚本,所以我没有selectDSC和普通脚本之间的区别。 我之前做过一些正规的脚本,也许他们没有那么好的例子。 它似乎像一个普通的脚本可以安装一个angular色/function,并复制一些文件就好了。 我没有看到DSC的好处,而只是一个脚本。 除了一台机器能够在实践中轮询某种他们没有涉及的变化,就是在理论上。 DSC比传统脚本有什么好处; 比如“安装angular色,复制文件”? 借助PowerShell,您可以连接到远程计算机并告诉他们执行任务,所以这不是DSC专有的。 有了DSC,好像你正在做一些编译生成mof文件,然后在脚本之后从shell运行它,这似乎是不必要的一步。 MSDN概述读起来像PowerShell的概述,我没有看到差异化的特征。
我如何找出(在Powershell)什么过程/什么使用最多的内存? 编辑:我想弄清楚如何使用Powershell找出什么是使用所有的物理内存的情况下,任务pipe理器等无法解释为什么所有的物理RAM用完了。 也就是说,我需要识别高速caching等使用的内存
所以我使用DSC推模式 我每天有大约200次部署到几个环境(DEV / INT / QA / PROD) 每次我部署我想确保每个服务器configuration正确 所以我自动运行DSC作为我的部署,这是完全没有用户交互执行的一部分 所以我想知道是否有一种方法来知道在运行DSCconfiguration后是否需要重启/重启 基本上运行这条线后 Start-DscConfiguration -Wait -Force -Path .\SomePath 我如何configuration软件包的例子 Package MVC3 { Name = "Microsoft ASP.NET MVC 3" Ensure = "Present" Path = "$Env:SystemDrive\AspNetMVC3ToolsUpdateSetup.exe" ProductId = "DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA" Arguments = "/q" DependsOn = "[WindowsFeature]IIS" Credential = $Credential } Package MVC4 { Name = "Microsoft ASP.NET MVC 4 […]
我可以成功使用Powershell来判断用户是否在Active Directory中进行身份validation: Function Test-ADAuthentication { param($username,$password) (new-object directoryservices.directoryentry "",$username,$password).psbase.name -ne $null } Test-ADAuthentication "test" "Password1" 但是,我不能为了我的生活弄清楚如何: 检查密码是否需要重置,而 validation发送的凭证在他们的最后一个密码上工作。 怎么能这样呢?
这让我疯狂! 显然使用servermanager模块应该像input一样简单: Import-Module servermanager 问题是我没有它。 PS C:\Users\Administrator> Get-Module -ListAvailable Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules ModuleType Name ExportedCommands ———- —- —————- Manifest BitsTransfer {Add-BitsFile, Remove-BitsTransfer, Complete-BitsTransfe… Manifest CimCmdlets {Get-CimAssociatedInstance, Get-CimClass, Get-CimInstanc… Script ISE {New-IseSnippet, Import-IseSnippet, Get-IseSnippet} Manifest Microsoft.PowerShell.Diagnostics {Get-WinEvent, Get-Counter, Import-Counter, Export-Count… Manifest Microsoft.PowerShell.Host {Start-Transcript, Stop-Transcript} Manifest Microsoft.PowerShell.Management {Add-Content, Clear-Content, Clear-ItemProperty, Join-Pa… Manifest Microsoft.PowerShell.Security {Get-Acl, Set-Acl, Get-PfxCertificate, Get-Credential…} Manifest […]
每次我执行这个命令 invoke-command -computername REMOTEPC -scriptblock { import-module WebAdministration; new-item "$env:systemdrive\inetpub\testsite" -type directory; New-WebSite -Name TestSite -Port 81 -PhysicalPath "$env:systemdrive\inetpub\testsite" } 我得到以下错误 Invalid class string (Exception from HRESULT: 0x800401F3 (CO_E_CLASSSTRING)) + CategoryInfo : NotSpecified: (:) [Get-ChildItem], COMException + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Microsoft.PowerShell.Commands.GetChildItemCommand 据我所知,该网站已成功创build。 枚举testsite时,下面的命令给出同样的错误 Invoke-Command -computername REMOTEPC { import-module webadministration; dir -path IIS:\Sites\ } Name ID State […]
我想知道如何改变我的$ profilevariables指向的位置。 PS H:\> $profile H:\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 H:\是一个networking共享,所以当我创build我的configuration文件,并加载PowerShell时,我得到以下内容: 安全警告仅运行您信任的脚本。 虽然来自Internet的脚本可能有用,但此脚本可能会损害您的计算机。 你想运行H:\ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1吗? [D]不运行[R]运行一次[S]暂停[?]帮助(默认为“D”): 据微软称,$ profile的位置由%USERPROFILE%环境variables决定 。 这不是真的: PS H:\> $env:userprofile C:\Users\username 例如,我有一台XP机器如何工作: PS H:\> $profile C:\Documents and Settings\username\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 PS H:\> $env:userprofile C:\Documents and Settings\username PS H:\> $env:homedrive H: PS H:\> $env:homepath \ 这是从Vista机器相同的输出$ profile指向错误的地方: PS H:\> $profile H:\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 PS H:\> $env:userprofile C:\Users\username PS […]
我被要求生成一个安全组列表(特别是不是通讯组),列出大约50个用户所属的列表。 我有一个用户列表, users.txt包含在一个新行上的每个用户名。 我想要生成membership.txt ,其中包含用户名和用户所属的安全组列表,用逗号分隔。 到目前为止我写的Powershell脚本如下: $users = Get-Content C:\users.txt ForEach ($User in $users) { $getmembership = Get-ADUser $User -Properties MemberOf | Select -ExpandProperty memberof $User + ',' + $getmembership | Out-File -Append c:\membership.txt } 这几乎可以工作,但有两个问题: 它正在生成所有组的列表,而不仅仅是安全组。 我怎么能告诉它只包含安全组而不包含分发组? 这些团体正在以OU=Security Groups,OU=City,DC=domain,DC=com CN=Senior Leaders的forms被追加,但是我唯一需要的信息是Senior Leaders 。 我怎样才能删除所有的额外信息?
我需要在Windows Server 2012上安装AD PowerShell模块,但无法在工作时间重新启动服务器。 我的问题是可以从添加/删除Windowsfunction安装AD模块,而不需要重新启动? 如果是这样,哪些AD模块需要(至less)PowerShell运行此命令 Search-ADAccount -LockedOut
PowerShell错误对象包含大量的数据,但我似乎无法追查一个给定的错误发生的时间。 使用$Error[0] | fl -f $Error[0] | fl -f检索很多信息,但没有一个看起来是错误产生的date时间。 它发生在我这个数据将/应该是错误对象的一部分,我只是无法find确切的属性。 我可以通过使用try / catch块来获取一个近似值,然后捕获时间,但是我需要尽可能精确的时间戳。 任何人都知道在何处/如果发生的时间存储在$ Error对象?