Questions tagged «powershell»

Microsoft的交互式外壳程序,脚本和编程语言以及周围环境。PowerShell通常由管理Microsoft软件(包括Windows,Exchange,SharePoint和云服务Azure和Office 365)的系统管理员使用,默认情况下Windows附带了PowerShell,它接管了以前的语言(例如VB脚本)。

4
测试群集Powershell cmdlet列表与验证
Powershell cmdlet可以Test-Cluster查询大量数据并执行验证测试,并将其包装到漂亮的报告中。如果运行,则将Test-Cluster -List获得项目列表,您可以使用cmdlet进行单独查询。阅读时,有一个通用的命名方案DisplayName。它们都以“ List”或“ Validate”开头。 显然,“验证”将通过失败来实际测试故障转移。但是命名“列表”使我认为它只是运行时对数据的查询。我已经使用以下脚本对此进行了测试: $TestList = Test-Cluster -List | Where-Object {$_.DisplayName -like "List*"} Test-Cluster -Include $TestList.DisplayName -ReportName "c:\cluster reports\report" 生成此报告时,没有看到任何记录的群集错误或注意到任何故障转移活动。Microsoft technet对此也不是很清楚,但是他们确实推断该行为符合我的想法。参见以下摘录(重点是我的): 测试结果将捕获到具有您指定文件名的文件中。通过运行验证测试,可以确认您的硬件和设置与故障转移群集兼容。有多种类型的测试,包括群集,清单,网络,存储,系统和其他类型的测试。存储测试将不会测试群集角色正在使用的联机磁盘或存储池。要测试此类磁盘,请首先运行Stop-ClusterGroup以停止群集角色,然后运行Test-Cluster。测试完成后,再次启动群集角色,也称为资源组。 测试群集TechNet页面 我想提醒您注意他们对“ Validation”一词的使用。另外,在运行该脚本时,作为输出的一部分,它说: Test Result: ClusterSkippedTestsCompleted 如果包含验证测试,则结果为: Test Result: ClusterConditionallyApproved 在我的测试环境中,网络测试生成了一些警告,触发了有条件的批准。我已经在Google上搜索了很多文档,这些文档描述了“验证”与“列表”拆分背后的逻辑,但是我没有提出任何建议。这导致了一个问题... 列表请求是否触发故障转移事件?

1
跨域边界的New-PSSession
我正在尝试启动一个需要能够创建新会话(使用New-PSSession)的虚拟机。当然,高度参与的about_Remote_Troubleshooting是我的不变伴侣! 启动基本计算机(Win 8.1 Enterprise)后: 例如,我公司的主要域名是mycompany.com。 我们有一个开发领域,dev.mycompany.com以便开发人员可以使用一个沙箱。 我将新的VM(名为my-vm)添加到了开发域dev.mycompany.com。 我在新VM上有一个本地帐户,该帐户在my-vm\msorens本地计算机上的Administrators组中。 第一关: New-PSSession由于跨域问题,尝试运行只是失败,访问被拒绝。根据上面引用的故障排除页面: 当另一个域中的用户成为本地计算机上Administrators组的成员时,该用户无法使用管理员特权远程连接到本地计算机。 我不确信这是真的(由于我在域问题上的经验不足),但是应用该补救措施的配方可以使基本New-PSSession方法起作用: New-ItemProperty ` -Name LocalAccountTokenFilterPolicy ` -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System ` -PropertyType DWord ` -Value 1 (而且,虽然它的安全性较差,但它只是个沙盒VM,所以很好。) 第二关: 有了上述补丁,我可以成功完成以下任何一项操作: PS> New-PSSession PS> New-PSSession -ComputerName localhost PS> New-PSSession -ComputerName my-vm 但是,我的实际需要是提供机器的FQDN: PS> New-PSSession -ComputerName my-vm.dev.mycompany.com 由于缺少凭据,该操作失败。这给我们带来了: PS> New-PSSession -ComputerName my-vm.dev.mycompany.com -Credential (Get-Credential) …

2
Powershell Get-Process负内存值
我正在使用Powershell Get-Process cmdlet进行一些验证,并获得了一些有关某些过程的怪异值。我在运行有SQL Server实例的服务器上进行了测试,如资源监视器报告的那样,该服务器正在运行并消耗3GB +的RAM,并且在运行Get-Process时,SQL Server进程上的WorkingSet值为负,另一个进程正在消耗2GB +的PrivateMemorySize,并且得到相同的结果PM的负值。 以下是结果的屏幕截图。 抱歉,该操作系统为葡萄牙​​语。 电源外壳: 检查sqlservr和最后一个scvhost ... 幸运的是,我的脚本使用WMI(Win32_Process类)来获取进程信息,并且其中的值正确且所有内容都匹配。 是虫子吗?也许价值很高?我正在使用Powershell v3。

3
如何从PowerShell中的所有网站列出IIS中的虚拟目录
我遇到了一个完整的障碍,无法弄清楚如何为中的每个网站打印虚拟目录IIS 8。我一直在检索应用程序,并清空null参数错误,只是找不到一种方法来列出虚拟目录。 我需要以下数据来列出有关虚拟目录的信息: 物理路径 应用程序池协会 网站名称 证书 以下是我一直在使用并弄乱的代码: *See revised code below* 我还使用了Appcmd.exe命令来尝试列出虚拟目录: C:\Windows\System32\inetsrv\appcmd.exe LIST VDIRS 但是我仍然没有得到我需要的输出。任何东西或任何帮助将不胜感激!谢谢! 编辑# - - - - - - - - - - - - - - - - - - - - - - - - ---------------------- 通过注释两行让我的虚拟目录列出来,但它只打印出名称和: 物理路径 应用程序池协会 网站名称 证书 我仍然不知道,下面是修改后的代码: Import-Module …

5
PowerShell导入DnsShell模块
因此,这是此目录中可用模块的列表。如您所见DnsShell,那里。 PS C:\windows\system32> Get-Module -ListAvailable 目录:C:\ windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules ModuleType Name ExportedCommands ---------- ---- ---------------- Manifest ActiveDirectory {Get-ADRootDSE, New-ADObject, Rename- ADObject, Move-ADObject...} Manifest AppLocker {Set-AppLockerPolicy, Get-AppLockerPolicy, Test-AppLockerPolicy, Get-AppLo... Manifest BitsTransfer {Add-BitsFile, Remove-BitsTransfer, Complete-BitsTransfer, Get-BitsTransfe... Manifest CimCmdlets {Get-CimAssociatedInstance, Get-CimClass, Get-CimInstance, Get-CimSession...} Binary DnsShell Script ISE …

7
如何使用Powershell禁用计划任务?
我有一个在Windows Server 2008 R2上运行的Web应用程序,该应用程序具有大量计划任务,可以处理所有后端工作。当我进行涉及数据库的软件部署时,我需要禁用所有计划的任务。目前,我有一个漫长的清单,需要手动执行,以禁用每个计划的任务-当然,对于Powershell自动化,这是一项成熟的工作。 不幸的是,Powershell文档似乎对如何禁用现有的计划任务(当然,一旦发行成功完成就重新启用它)显得束手无策。我可以获得已准备好,正在运行或已禁用的任务的列表,但是接下来呢?

1
Powershell-在AD中测试用户凭据,并重置密码
我可以成功使用Powershell告诉用户是否在Active Directory中进行了身份验证: Function Test-ADAuthentication { param($username,$password) (new-object directoryservices.directoryentry "",$username,$password).psbase.name -ne $null } Test-ADAuthentication "test" "Password1" 但是,我无法终生解决: 检查是否需要重置密码,同时 验证发送的凭据确实可以使用其上一个密码。 怎么会这样呢?

5
如何找到本地用户帐户的创建日期?
我想获取本地用户帐户的创建日期(如果重要,请赢7)。我看过以下WMI对象(当然还有Google): Win32_UserAccount Win32_NetworkLoginProfile 从中返回的对象NetworkLoginProfile具有最后的登录时间,但没有创建日期。检查Date Created他们的个人资料文件夹的属性仅仅给出了日期的文件夹的创建,不一定帐户本身。

1
如何接受使用Powershell通过SCCM部署的软件更新的EULA
我正在尝试使用Start-CMSoftwareUpdateDeploymentcmdlet将软件更新组部署到现有集合。 PS WHO:\> Start-CMSoftwareUpdateDeployment -SoftwareUpdateGroupName "Update Group - Microsoft Updates" -CollectionName ` Eval_OSUpdates -DeploymentType Required -SendWakeUpPacket $true -AllowRestart $true -PersistOnWriteFilterDevice $true ` -DownloadFromMicrosoftUpdate $true -DeploymentName "Evaluation Deployment - Update Group - Microsoft Updates" ` -UserNotification DisplayAll -RestartWorkstation $false -AllowUseMeteredNetwork $true 给出了所有必需的参数,但是我在执行时收到以下错误: Start-CMSoftwareUpdateDeployment : ConfigMgr Error Object: instance of SMS_ExtendedStatus { …

1
PowerShell DSC组资源-“找不到具有提供的名称的主体”
我正在尝试使用PowerShell DSC将域组添加到本地管理员组。这是代码: Configuration TestSetup { Node localhost { Group Administrators { GroupName = "Administrators" MembersToInclude = "MYDOMAIN\TheAdministratorsGroup" } } } 运行它会导致以下错误: PowerShell provider MSFT_GroupResource failed to execute Test-TargetResource functionality with error message: Could not find a principal with the provided name [mydomain\theadministratorsgroup] + CategoryInfo : InvalidOperation: (:) [], CimException + …

4
使用Powershell编辑/设置Mime类型?
所以我想知道是否存在使用Powershell在IIS 7.5中更改/编辑MIME类型的特定方法? 到目前为止,我所遇到的解决方案,以添加MIME类型,如: http://sclarson.blogspot.co.at/2011/08/adding-mime-type-to-iis-vis-powershell.html HTTP://论坛。我检查了iis.net/t/1192371.aspx 以及其他一些被引用过的书,但这些书不包含任何信息。 似乎Add-WebConfigurationProperty正在使用,但是当我将这种方法用于现有的mimetype时,我将收到与重复项条目相关的错误(因为它已经在其中),因此该方法不在窗口之内。 我试图使用Set-WebConfigurationProperty代替,但是导致它删除了所有现有的mimetype条目,而只留下其中一个。 那么,有没有人提出建议或知道正确的方法呢?我还考虑过做类似先删除条目然后再添加条目的操作,唯一的问题是您将需要知道mimetype fileExtension和mimeTypes(即text / XML等)。因此,我假设我首先需要使用getwebconfigproperty方法来获取两个属性,然后通过将其值解析到delete-webpropconfig函数中然后再将其添加来将其删除...但是,仅通过三个步骤来设置mimetype似乎是多余的。 据我了解,appcmd.exe设置配置“此处的值和参数”方法几乎可以直接做到这一点。但是,与此相关的问题是不幸的是我们无法使用它。是的,我了解我可以使Powershell执行appcmd命令,但这不是一个可行的选择。我曾尝试使用Google搜寻和在书籍中阅读以寻求解决方案,但到目前为止仍未找到答案 1)该set-webconfigurationproperty方法删除所有其他模仿类型条目 2)add-webconfigurationproperty将不允许我执行该操作,并抛出“错误重复”消息 3)一个有效的解决方案,使用powershell在1行中完成此操作。
8 powershell  iis 

2
powershell:如何检查是否在远程计算机上启用了SMART
我试图获取远程计算机的磁盘信息,包括是否通过使用win32_diskdrive类在驱动器上启用了SMART。 这比我想的要难。虽然很容易读取status属性,但我在Capabilities属性中发现了一些有趣的东西,即表示“ SMART Notification”是否可用的值。除非在提升的安全性上下文中运行命令,否则不会显示该值。例如,如果我运行(gwmi win32_diskdrive)。功能SMART值(10)不会出现在值数组中,但是如果我在提升的提示符下运行它,它的确会出现。据我所知,您不能在提升的环境中运行winrm会话(并且我对俗气的schtasks hacks或psexec并不感兴趣)。 因此,然后我尝试将win32_diskdrive映射到MSStorageDriver_FailurePredictStatus类。我想我还是必须这样做,因为即使SMART出现在Capabilities属性中,也不一定意味着其已启用吗? 我正在将win32_diskdrive的PNPDeviceID属性映射到MSStorageDriver_FailurePredictStatus的InstanceName属性,但是现在我的问题是我认为InstanceName属性不够独特,无法正常工作。例如,这是我的InstanceName:IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_0 它显示接口类型(IDE),型号(ST3250312AS),固件版本(JC47),我认为这是某种唯一标识符(5&350bf0c3&0&0.0.0),然后看起来像是索引号(_0)。当我用google搜索时,5&350bf0c3&0&0.0.0它会显示驱动器上的一些信息,因此我认为这个数字不是唯一的。这意味着唯一性在索引号中,而索引号未包含在win32_diskdrive类的PNPDeviceID属性中。这是一个问题,因为我们的许多服务器都有多个相同的磁盘。 我担心的是,MSStorageDriver_FailurePredictStatus它将代表多个磁盘,如下所示: IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_0 IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_1 IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_2 所有这些的win32_diskdrive的PNPDeviceID属性将是 IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0 如何可靠地将从win32_diskdrive检索到的对象映射到Powershell MSStorageDriver_FailurePredictStatus或通过远程会话以其他方式执行此操作? 编辑: 好吧,看来我反应过度了。当我检查一堆服务器时,我发现InstanceNames \ PNPDeviceIDs像这样: SCSI\Disk&Ven_TOSHIBA&Prod_MBF2600RC\5&354ecb35&0&000200_0 SCSI\Disk&Ven_TOSHIBA&Prod_MBF2600RC\5&354ecb35&0&000300_0 如果没有人可以在一天左右的时间内最终确认这一点,那么我将假定该值实际上是唯一的,并将其标记为“答案”。

3
如何使用Powershell在Exchange数据库中获取2年以上的电子邮件列表,并按用户排序?
我们目前正在考虑将电子邮件存档并修订我们的保留政策。最大的问题是(对于法律部门),我们要保存多久?当前,我们的用户有一个很大的邮箱限制,并且过去所有用户都可以按照自己的意愿进行存档。因此,我们有数百GB的数据不在Exchange数据库中,但最终可能会被吸入Archive数据库进行发现。我想做的是能够为法律团队量化如果我们退回1年,2年,3年等将会得到多少。 我在TheDailyAdmin上找到了一个相当简单的Powershell脚本,该脚本可以满足我的大部分需求,但是却将所有内容都融合在一起。我希望能够看到结果,但根据用户进行了排序,以了解Sally拥有2年以上的47MB内存,Charles拥有超过2年的190MB内存,依此类推。 这是我运行的脚本: get-mailboxdatabase | get-mailbox -resultsize unlimited | get-mailboxfolderstatistics -folderscope all -includeoldestandnewestitems | export-csv mailbox_stats.csv 将它们全部记录在文件中效果很好,但我无法确定谁的电子邮件属于谁。我还专门在我的邮箱上运行了它,但是我宁愿不要在每个用户上手动运行它,因为这可能需要一段时间!我不是Powershell专家,但我希望那里的人能更坚定地掌握,并可以帮助我指出正确的命令方向,以帮助我进一步分解。 提前致谢!

2
在PowerShell脚本中使用Diskpart不允许脚本重复使用驱动器号
我构建了一个脚本,该脚本使用Diskpart挂载(附加)VHD,清除一些系统文件,然后卸载(分离)它。它使用foreach循环,并假定使用相同的驱动器号清除多个VHD。但是,在第一个VHD之后,它将失败。我还注意到,当我尝试用diskpart手动附加VHD时,diskpart成功了,磁盘管理器显示了具有正确驱动器号的磁盘,但是在同一PoSH实例中,我无法连接(设置位置)到该驱动器。如果我在第一次打开PoSH时进行了手动diskpart,则可以附加和分离所有想要的文件,并且每次都获得驱动器号。我需要做些什么来重置脚本中的diskpart吗?这是我正在使用的脚本的片段。 function Mount-VHD { [CmdletBinding()] param ( [Parameter(Position=0,Mandatory=$true,ValueFromPipeline=$false)] [string]$Path, [Parameter(Position=1,Mandatory=$false,ValueFromPipeline=$false)] [string]$DL, [string]$DiskpartScript = "$env:SystemDrive\DiskpartScript.txt", [switch]$Rescan ) begin { function InvokeDiskpart { Diskpart.exe /s $DiskpartScript } ## Validate Operating System Version ## if (Get-WmiObject win32_OperatingSystem -Filter "Version < '6.1'") {throw "The script operation requires at least Windows 7 or Windows Server …

5
计划任务中的Exchange PowerShell永远运行
我有几个要作为计划任务运行的Exchange 2010 PowerShell脚本。 如果使用“以其他用户身份运行”启动PowerShell,则可以运行脚本并正确执行。 如果我使用同一用户计划任务,则该任务将永远处于“运行”状态。 如何确定任务卡在哪里? 作为参考,以下是启用Exchange内容的方法: . 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1' Connect-ExchangeServer -auto 这是我尝试从任务计划程序运行脚本的方式: powershell-命令“&{。'c:\ windows \ script.ps1'}” powershell-文件'c:\ windows \ script.ps1' powershell-文件“ c:\ windows \ script.ps1” 所有结果相同。......

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.