Questions tagged «powershell»

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


3
Powershell参数
我的脚本中有一个Param块 Param ( [Parameter(Mandatory=$True)] [string]$FileLocation, [Parameter(Mandatory=$True)] [string]$password = Read-Host "Type the password you would like to set all the users to" -assecurestring ) 我可以在必填的“参数”字段中使用“读取主机CmdLet”吗?如果不是,我该怎么做才能确保输入正确的变量类型,以便将其传递给用户创建过程?

2
如何授予使用Powershell远程启动/停止服务的权限?
我们有一个PowerShell脚本,可以在另一台计算机上重新启动服务。当我们使用PowerShell的内置服务控件cmdlet时,如下所示: $svc = Get-Service -Name MyService -ComputerName myservicehostname Stop-Service -InputObject $svc Start-Service -InputObject $svc 我们得到这个错误: Stop-Service:无法在计算机“ myservicehostname”上打开MyService服务。 但是,当我们使用sc.exe时,如下所示: C:\Windows\System32\sc \\myservicehostname stop MyService C:\Windows\System32\sc \\myservicehostname start MyService 启动和停止成功。 重新启动的用户不是管理员。我们使用subinacl授予用户启动/停止和查询服务的权限: subinacl.exe /service MyService /GRANT=MyServiceControlUser=STO PowerShell为什么不能停止我的服务却sc.exe可以停止我的服务?

3
使用Winrm和Microsoft.Update.Session远程修补服务器的问题
我有一个装有Windows 2003、2008和2008r2服务器的网络。我有一个Powershell脚本,该脚本是使用“ Microsoft.Update” com对象编写的,用于修补本地计算机。(类似于 Windows Update PowerShell Remoting。)我的脚本在本地可以很好地运行,但是由于要管理的服务器数量很多,我想远程使用它的功能。在这种情况下,它会下降(类似于其他未解决的帖子)。 但是,我能够将失败范围缩小到特定类的两个方法。 (New-Object -ComObject "Microsoft.Update.Session").CreateUpdateDownloader() (New-Object -ComObject "Microsoft.Update.Session").CreateUpdateInstaller() 如果您以管理员身份在本地Powershell中运行这些程序,则不会有任何问题。如果尝试使用invoke-command(或enter-session或winrs),则会出现以下错误。(这是使用localhost进行的测试,但是任何主机都可以。我还尝试了使用不同的身份验证方法,例如credssp和kerberos。) PS C:\> Invoke-Command -ComputerName localhost -ScriptBlock { (New-Object -ComObject "microsoft.update.session").createUpdateDownloader()} Exception calling "CreateUpdateDownloader" with "0" argument(s): "Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))" + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : …

5
编写Powershell脚本以将具有特定扩展名的文件从一个文件夹复制到另一个文件夹
我想编写一个Powershell脚本,该脚本获取以下参数作为输入: 要从中复制的文件夹,扩展名允许的文件夹,要复制的文件夹以及指示更改是否应重新启动IIS,用户名和密码的布尔值。 考虑到要复制到远程服务器,我应该查看哪些cmdlet? 如何将参数读入变量? 如何重新启动IIS? 考虑到可能要复制多个文件夹,我该如何编写调用Powershell脚本的Powershell脚本?
10 powershell 


1
自定义Powershell字体和大小
我们有许多Windows 2012 Server核心系统,使用以下命令将powershell设置为默认外壳: $RegPath = "Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\winlogon" Set-ItemProperty -Confirm -Path $RegPath -Name Shell -Value 'cmd.exe /C start /max PowerShell.exe -noExit' 我发现我们可以使用特殊的powershell脚本自定义powershell字体颜色,该脚本位于c:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ profile.ps1。该脚本被所有用户使用。 但是,现在我想自定义持久的字体和字体大小(再次针对所有用户)。IE如果我注销服务器并重新登录,则希望保留设置。同样,如果我以管理员身份登录,或者我自己的帐户Powershell应该看起来相同,请使用相同的字体颜色,字体和字体大小。 使用Powershell ISE,似乎可以使用以下方法设置字体和字体大小: $psISE.Options.FontName = 'Lucida Sans Console' $psISE.Options.FontSize = 14 但是,PowerShell本身的等效功能是什么?
10 powershell  color  font 

3
无法使CredSSP身份验证在PowerShell中工作
在尝试使用远程处理创建PowerShell脚本时,我遇到了我认为是双跳问题。在那篇文章中,Perriman简要描述了该问题以及解决该问题的具体步骤(如果您知道这些命令,这几乎是微不足道的,但是对于像我这样不那么熟悉的人来说,这些信息是非常宝贵的!)。 我Enable-WSManCredSSP Server在Win7服务器上运行Enable-WSManCredSSP Client –DelegateComputer <FQDN of the server>时没有发生任何事故,但是尝试在Win7客户端上运行时产生此错误: Enable-WSManCredSSP : The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly …

5
远程PS会话在非域服务器上失败
我正在尝试使用Win8主机(相同子网,这是本地VM)中的PS连接到非域加入的远程Win2008R2服务器。尝试了所有我能找到的东西,没有任何效果。 服务器: PS C:\Users\Administrator> winrm quickconfig PS C:\Users\Administrator> enable-psremoting 客户: PS C:\scripts> $cred = get-credential -username "administrator" -message "Enter password" PS C:\scripts> $sess = new-pssession -computername 10.10.106.2 -credential $cred -authentication default new-pssession : [10.10.106.2] Connecting to remote server 10.10.106.2 failed with the following error message : The WinRM client cannot …
10 powershell 

2
PowerShell的$ PSVersionTable的内容代表什么?
如果我echo $PSVersionTable在PowerShell中,则得到的似乎是版本信息的多个位。 属性的名称是 CLRVersion BuildVersion PSVersion WSManStackVersion PSCompatibleVersions SerializationVersion PSRemotingProtocolVersion 除1以外的所有其他版本均以普通版本符号(#.#.#)表示,其余1个(PSCompatibleVersions)为一组版本号({1.0, 2.0}) 这些分别代表什么? 此外:创建此问题是为了更深层次地回答我在安装什么版本的Windows管理框架时提出的另一个问题。。那里的评论,以及我$PSVersionTable与之链接的类似问题中的其他评论,建议可以用来获取WMF的版本。如果这些属性之一确实提供了WMF版本,并且可以保证这样做,那么也请务必在此回答。另外,如果您可以提供任何文件或确认的证据,则我可以给您+2:我的Google查询没有令人满意的结果。
10 powershell 

2
Powershell远程删除PKI证书
我最近重新构建了PKI,我想删除颁发给网络中所有客户端计算机的证书。听起来像是Powershell的工作!因此,我编写了此脚本,由GPO分发,从SysVol运行,并在启动时在客户端计算机上触发: set-location cert:\LocalMachine\My $certname = $env:COMPUTERNAME + ".domain.com" get-item * | %{ if($_.issuer -like "CN=IssuingCA*" -and $_.DnsNameList.unicode -like $certname) { remove-item .\$_.Thumbprint -Force } } 在提升的命令提示符下: 当运行Ran时,脚本不提供任何输出(仅是一个新的终端线)。它不返回任何错误,并且不会删除证书。 将参数-WhatIf添加到Remove-Item脚本中的命令后,不会再有错误,并且不会删除证书。 当运行Remove-Item。\ CERTIFICATE-THUMBPRINT -Force时,将删除证书。 这是权限问题吗?有没有更聪明/更简单的方法来做到这一点? 谢谢!

2
如何在不使用Add-WebConfiguration丑陋语法的情况下设置IIS应用程序池的回收时间?
我一直在脚本通过我们的IIS 7.5的实例和配置位和其他民族的脚本我想出了一个语法,我喜欢的作品: $WebAppPoolUserName = "domain\user" $WebAppPoolPassword = "password" $WebAppPoolNames = @("Test","Test2") ForEach ($WebAppPoolName in $WebAppPoolNames ) { $WebAppPool = New-WebAppPool -Name $WebAppPoolName $WebAppPool.processModel.identityType = "SpecificUser" $WebAppPool.processModel.username = $WebAppPoolUserName $WebAppPool.processModel.password = $WebAppPoolPassword $WebAppPool.managedPipelineMode = "Classic" $WebAppPool.managedRuntimeVersion = "v4.0" $WebAppPool | set-item } 我已经看到这样做的方式不那么简洁,而且我喜欢这种设置对象属性的语法与在TechNet上看到的东西相比的方式: Set-ItemProperty 'IIS:\AppPools\DemoPool' -Name recycling.periodicRestart.requests -Value 100000 我还无法弄清的一件事是如何使用此语法设置回收计划。 这个命令设置了ApplicationPoolDefaults,但是很丑陋: …
9 iis  powershell 

2
需要将Windows 2012 R2上的系统区域设置从en-US更改为en-GB
当我启动Aws Ec2 Windows 2012 R2实例时,它始终带有默认的美国语言环境。 但是,我需要将两个现有实例更改为en-GB,就像首先安装它们一样。也就是说,我需要将所有用户的语言环境更改为en-GB,包括网络服务或本地服务之类的系统用户。 有没有办法做到这一点? 我已经在Powershell Set-WinSystemLocale zh-CN中尝试过,但是即使没有错误,即使重启也不会执行任何操作。 感谢您的任何帮助。

2
Powershell:找不到与之匹配的参数
我是Powershell世界的新手。以下是我的第一个脚本 $sServer = "Fully.Qualified.Computer.Name" $os = Get-WmiObject -class Win32_OperatingSystem -computername $sServer $object = New-Object –TypeNamePSObject $object | Add-Member –MemberTypeNoteProperty –Name OSBuild –Value $os.BuildNumber $object | Add-Member –MemberTypeNoteProperty –Name OSVersion –Value $os.Version $object | Add-Member –MemberTypeNoteProperty –Name BIOSSerial –Value $bios.SerialNumber Write-Output $object 在PowershellISE中运行此脚本时,出现以下错误。 New-Object : A parameter cannot be found that …

1
域名系统(DNS)服务器Cmdlet的小问题
我想知道我是否需要清除某些缓存或某些问题。 我正在尝试从DNS区域中删除A记录,并将其替换为具有相同主机名的CName记录。 Remove-DnsServerResourceRecord -Zonename $line -InputObject $record -Force Add-DnsServerResourceRecordCName -Zonename $line -Name $hostname -TimeToLive $ttl -HostNameAlias $target 这引发了我: Add-DnsServerResourceRecordCName:无法在服务器NS01的区域zone.tld中创建资源记录@。在C:\ admin \ updatettl.ps1:56 char:4 + Add-DnsServerResourceRecordCName -Zonename $ line -Name $ hostname> -TimeToLive ... + ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ + Add-DnsServerResourceRecordCName 有任何想法吗?谢谢

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.