Articles of PowerShell

PowerShell FTP获取不会保存在Windows Server上

在Windows Server 2012中,使用PoweShell ,我通过ftp连接到远程设备,并运行get来检索文件。 该过程没有问题,但文件不会保存到我的本地计算机上。 该命令返回Operation Complete ,几秒钟后连接closures。 Operation CompleteConnection closed by remote host. ftp> 在目标位置,在进程开始时会创build大小为0的临时文件,并且该文件保持不变。 Tmp6A94.tmp 我试图打开防火墙按照如何为被动模式FTP服务器configurationWindows防火墙 netsh advfirewall firewall add rule name=”FTP Service” dir=in protocol=TCP enable=yes action=allow profile=any service=ftpsvc localport=any netsh advfirewall set global StatefulFTP disable 我错过了什么? 编辑1 我已经testing了另外一个WS2012和WS2012R2上的ftp行为,两者并没有相同的问题。 他们都没有防火墙的FTP被动模式。 我想知道是否可能有一些其他的防火墙规则,使ftp传输。 编辑2 这是我用来通过ftp从远程设备检索文件的PowerShell脚本: function getFTPFile([String]$fileName) { $ftpUser = "user" $ftpPassword = "password" $ftpServer […]

尽pipe具有pipe理权限,但无法使用PowershellclosuresHyperV虚拟机

我试图使用closures我的Hyper-V虚拟机的脚本,将他们的VHD复制到目标共享,然后启动备份。 我几天前在香料厂find了这个剧本 。 我总是收到用于关机的系统名称为空值的错误。 基本信息: 我一直在作为pipe理员运行PowerShell。 我将我的ExecutionPolicy设置为“RemoteSigned”,以便执行本地PowerShell文件。 我似乎正在运行PowerShell v 2.0 我在Server 2008 R2中运行HyperV 我直接在VM主机上执行这个脚本 下面是脚本和解释我遇到的错误,确切地说是什么错误: $waitstart = 200 $waitshutdown = 120 if ($args[1] -match "0") { $inputfile=get-content $args[0] foreach ($guest in $inputfile) { write-host "Starting $guest" $vm = gwmi -namespace root\virtualization -query "select * from msvm_computersystem where elementname='$guest'" $result = $vm.requeststatechange(2) if ($result.returnvalue -match "0") […]

Powershell:pipe道input到Set-Acl

有一个混乱的文件夹与我需要统一的ACL不一致。 我希望用PowerShell来实现这一点。 所以我试图search所有缺less所需组的文件,并将权限应用于Set-Acl: Get-Acl | where {$_.accesstostring -notlike "*domain\required_grp*"} | Set-Acl $dir $acl 与icacls不同,Set-Acl要求您成为该文件的所有者,以便能够修改ACL。 这就是为什么: $dir= Get-Acl .\reference_file $acl= $ACL.SetOwner([System.Security.Principal.NTAccount]$my_account) 那么,运行命令时,我得到以下错误: Set-Acl : The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do not match any of […]

Powershell在新窗口中运行所有外部命令,省略输出

如主题中所述,我的powershell环境正在单独的窗口中执行所有外部命令。 在我的团队构build脚本的典型testing中,这包括如下内容: 为sln中的每个项目运行nuget.exe nunittesting赛跑者 这是相当严重的。 这个行为实际上阻止了我在运行psake的时候执行多任务,因为当新窗口出现/消失时,它抓住我的鼠标/键盘焦点。 它还吞噬我们构build过程中各个步骤的宝贵输出。 根据https://stackoverflow.com/questions/8181490/powershell-suddenly-opens-cmd-exe-for-executing-bats ,我检查了$ env:PATHEXT,但它设置正确(包括在其项目中的.EXE ,这是一个分号分隔的列表)。 我是看到这种行为的团队中唯一的成员,它似乎与我的用户的一些全球/漫游configuration文件相关联,因为即使在我重新镜像我的机器后,它仍然发生。 任何帮助将不胜感激,我可以根据要求提供额外的信息。

Powershell安装 – WindowsFeature应用程序服务器(和子function)并分配证书

我想使用Powershell脚本在Windows 2012服务器上安装Application Server。 使用该向导时,它会提示您从本地计算机存储库中select一个证书(用于WS-Atomic事务)(或者生成一个自签名证书或稍后分配)。 运行类似于以下内容的操作时,可以指定证书吗? Install-WindowsFeature -Name Application-Server -IncludeAllSubFeature -IncludeManagementTools -ComputerName $svrName -Credential $credential 还是有一个PowerShell脚本关联一个证书后,事实? 如果我已经将https证书绑定到IIS的默认网站,那么我是否甚至需要将证书与WS-AT关联? 注意:我使用Get-Certificate cmdlet生成证书,因此获得证书不是问题: $x = Get-Certificate etc… $cert = $x.Certificate

设置CMTrace字体

可能是一个长镜头,但我想知道是否有人知道,或可以推测,一种方式来更改CMTrace的默认字体。 它似乎使用一些Sans-Serif字体。 我想将其更改为任何单间隔字体,以便从PowerShell(或控制台)输出保持排队。

NRPE(Winrpe)Powershell命令 – 无法读取Nagios中的输出

我试图从NRPE.cfg运行Powershell脚本,并在Nagios中获得输出。 当我在本地(Windows)服务器上运行脚本时,一切都很好。 但是,当我把它放在NRPE.cfg EN尝试获得输出在Nagios,我得到一个无法读取输出错误。 search互联网,但无法find解决scheme,所以也许你可以帮助我.. 命令/脚本是: 命令[check_veeam_dailyone] = cmd / c echo c:\ install \ veeam_check.ps1; 退出($ lastexitcode)| powershell.exe -ExecutionPolicy绕过-noninteractive -noprofile -File – 当我把这个在PowerShell的Windows服务器上,我会得到这个输出: PS C:\ Install> OK – 工作:VeeamOne_Daily在10/09/2014 04:45:51成功完成。 “PS C:\ Install>”部分很奇怪,但它确实读取了上一份工作,所以看起来“没问题”。 但是当我尝试在Nagios中获得这个输出时: root @ nagios:〜#/ usr / lib / nagios / plugins / check_nrpe -H 192.168.1.1 -t 300 -c check_veeam_dailyone 它说: NRPE:无法读取输出 […]

在PowerShell中运行Get-MessageTrackingLog作为一项工作

我试图创build一个Exchange 2010脚本,将search每个传输服务器作为一项工作。 我尝试以下方法: $transportserver = get-transportserver foreach ($ts in $transportserver) { $ts_name = $ts.name $s = New-PSSession -ComputerName $ts_name Invoke-Command -Session $s -Script { Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010; Get-MessageTrackingLog -server $args[0] } -Args $ts_name } 但是我得到的错误: Value cannot be null. Parameter name: serverSettings + CategoryInfo : NotSpecified: (:) [Get-MessageTrackingLog], ArgumentNullException + FullyQualifiedErrorId : System.ArgumentNullException,Microsoft.Exchange.Management.TransportLogSearchTasks.GetMessageTrackingLog 我已经尝试了一些变化,如添加更多的参数,但它返回相同的错误。

如何在本地机器的命令行提示符下交互地更改远程Windows计算机上的用户帐户的密码(在相同的LAN中)?

假设在Windows机器上有一个名为testuser的用户帐户,它只属于Users组和Users组。 testuser的当前密码是已知的。 问题是,如何在同一局域网中的另一台Windows机器上的命令行提示符(或PowerShell)中更改testuser的密码? 如果可以以交互方式提供旧的/新的密码(即,当被询问时可以隐藏地键入,而不是显式地作为命令行参数提供),则会更好。 目前为止我所使用的工具/实用程序主要提供远程“ 重置 ”用户帐户的密码(需要pipe理员权限但不是当前密码)的function。 我真正想要的是“ 更改 ”用户帐户的密码(需要当前密码,但不是pipe理员权限)。 后者可以通过“CTRL + ALT + DEL”(在用户名字段中提供“主机名\用户名”)在Windows GUI中完成。 我只是在命令行提示符下search等效的方法。

如何加速使用-CimSession参数的PowerShell cmdlet?

正如标题所说,一个人怎么能加速执行这个小脚本呢? 我是否正确地使用New-CimSession? $computers = Get-ADComputer -SearchBase "OU=W2012,OU=Servers,DC=contoso,DC=com" -Filter * foreach ($computer in $computers) { Get-ScheduledTask -TaskName "SomeTask" -CimSession (New-CimSession -ComputerName $computer.Name) }