Questions tagged «powershell»

Windows PowerShell是Windows的命令行外壳程序和脚本语言,它取代了CMD.exe Shell和批处理语言。PowerShell还是Windows的自动化引擎,提供类似于Windows Script Host和VBScript的功能。

1
远程运行'Start-Process':如何显示标准输出?
我有一个用于在远程计算机上安装软件的PowerShell脚本。 到目前为止,我已成功使用以下代码: $prog = "ping" $arg = "localhost" $computername = "MACHINE01" invoke-command -computername $computername {param($p,$a)& $p $a} -ArgumentList $prog,$arg 我现在需要安装MSI,例如。 'msiexec / i c:\ file.msi / passive'。 我无法让MSIEXEC将“MSIEXEC”之后的所有内容视为参数。 相反,PowerShell只是尝试将其作为一个大命令执行。 我曾经尝试了很多事情,主要涉及文字引号的放置,但无法使其发挥作用。 我现在放弃了调用操作符(&),转而使用'-ArgumentList'参数的'Start-Process'。 MSI现在可以正确执行。大! invoke-command -computername $computername {param($p,$a) start-process $p -argumentlist $a -nonewwindow -wait -redirectstandardoutput c:\output.txt; get-content c:\output.txt} -ArgumentList $prog,$arg “Start-Process”的问题在于,当使用“Invoke-Command”远程运行时,它不会产生任何控制台输出。 我不得不求助于将输出重定向到文件然后读取文件。有没有更好的办法?

1
Powershell脚本可以手动工作,但不能作为计划任务
我有一个powershell脚本将.doc转换为.pdf文件。当我手动执行它时,它在我的Windows Server 2012上完美运行。 当我将其作为计划任务执行时,打开Word的实例,但无法关闭它,并且任务无法正确结束。最糟糕的是,这个过程使用了10%的处理器,当任务再次运行时,另一个在它上面打开,并且这使用100%的cpu继续发生。 两次,手动和从计划任务运行它作为管理员...并且任务很好地创建,如果我修改脚本并且不打开Word并且仅仅例如创建.txt文件,工作正常。所以它存在的问题。 “从任务调度程序打开单词” 这是脚本,也是截图。任何帮助将不胜感激! $origen = 'C:\Test' $destino = 'C:\Test' $word_app = New-Object -ComObject Word.Application echo "Buscando cambios en las carpetas de origen..." Get-ChildItem -Path $origen -Filter *.doc? | ForEach-Object { if (-Not (Test-Path "$destino\$($_.BaseName).pdf")) { $document = $word_app.Documents.Open($_.FullName) $pdf_filename = "$destino\$($_.BaseName).pdf" echo "$($_.FullName) convertido a $pdf_filename!" …


1
确定网络文件夹的大小
我想要一个PowerShell脚本来获得大小为\\pmintl.net\rbsdata\SPA_BB01100TB 的网络文件夹(大小)和大量子文件夹。 我已经尝试了各种各样的脚本没有任何运气(下面是我试过的一个例子,但这似乎挂起): $startFolder = "\\pmintl.net\rbsdata\SPA_BB01" "Folder use {0:0,0.00} MB" -f ((Get-ChildItem -R $startFolder | measure-object length -Sum).Sum / 1TB)

0
重新启动计算机并按住脚本
我正在运行一个Powershell脚本,该脚本需要在脚本中间重新启动。重新引导后,脚本正在执行一些命令(在重新引导之前无法执行!)。我正在使用Restart-Computer重启计算机,并且重启立即开始。但是,重启命令之后的第一个命令将被执行! 因此,重新启动已启动,但脚本仍在运行(几秒钟..)。有没有办法保存脚本,因此在计算机关闭时它不会继续? Restart-Computer -Force "This is some content" >> C:\Users\Me\Desktop\Log.txt 在上面的示例中,计算机将重新启动,但是还将创建文本文件(带有“这是某些内容”)。我想重新启动计算机,而不创建文本文件。因此无需继续执行脚本。现在,我正在使用Start-Sleep进行此操作,但是必须有更好的方法。 谢谢。

2
从批处理脚本静默更改Powershell执行策略
我想要一些有关为Powershell设置注册表值的帮助。路径是 [hkey_local_machine \ system32 \ windows \ microsoft \ powershell \ 1 \ shellids \ microsoft.powershell]“路径” =“ c:\ windows \ system32 \ windowspowershell \ v1.0 \ powershell.exe”“ ExecutionPolicy” =“不受限制” 由于我是从一台好的机器导入的,因此当我运行.reg文件时,它可以正常工作。但是我希望在批处理文件中这样做。 当我手动调用命令提示符时,放入路径,例如c:\powershell.reg,这将导入值并根据需要覆盖注册表设置。 但是,如果l调用在批处理文件中执行相同的操作,则注册表中的值不会更改。在批处理文件中使用reg add命令,这些值将不起作用。

1
如何使远程计算机在远程计算机本身上运行PowerShell脚本?
我有两台远程计算机:1我们将其称为驱动程序,2我们将其称为客户端。它们在同一个域中,我们称它们为“ TECH.com”。 在驱动程序计算机上,我有一个控制客户端计算机的PowerShell脚本:1,还原客户端上的检查点。2,停止客户端。3,启动客户端。等。我正在尝试做的是使客户端计算机执行另一个PowerShell脚本(可以驻留在客户端或驱动程序和/或驱动程序上。可以在必要时将文件从驱动程序复制到客户端)。客户端计算机。 因此我做了一些研究,发现了两种方法:1,WS管理。2,WMI我在两台机器上都启用了psremoting。我已经在两台机器上测试了WsMan,并且它们都工作正常,但是我已经能够在这两台机器之间传输文件。但是,当我尝试运行Invoke-command时,它给了我错误: Connecting to remote server XXXXXXtech.com failed with the following error message : WinRM cannot process the request. The following error with errorcode 0x80090311 occurred while using Kerberos authentication: There are currently no logon servers available to service the logon request. Possible causes are: -The user name …



1
从特定文件夹中每个文件夹中的文件名中删除一个字符
使用脚本,我设法无意中重命名服务器上用户主文件夹中的所有内容 - 这样每个文件夹中的每个文件(以及文件夹中的文件夹)都被重命名为最后有一个“$”。我试图做的就是将每个用户的主文件夹重命名为foldername $,以便在搜索共享文件夹时隐藏。 总而言之,我想出了如何从一个文件夹中的每个文件中删除“$”,但它不会将其应用于所有子文件夹: get-childitem * | foreach { rename-item $_ $_.Name.Replace("$","") } 有谁知道如何修改它以从文件夹下的每个文件夹中的每个文件的末尾删除$符号? 谢谢!


1
PowerShell 5.0 Get-Help -ShowWindow不显示详细的参数说明
在PowerShell 3.0和4.0中运行时: Get-Help Get-Service -ShowWindow 它显示新窗口,其中包含GetService命令的完整描述(带有详细的参数说明)。在PowerShell 5.0中运行相同的命令时,它会显示新窗口,但只显示简单描述(没有详细的参数说明)。这是一个错误还是未来:)?

1
如何在PowerShell ISE输出窗格中避免自动换行
当我执行一个提供大量输出的命令时,实际上它是正在运行的服务器的日志,我看到当运行命令的选项卡不活动时,PowerShell ISE输出窗格会自动将文本包装到大约一半的屏幕宽度。有没有办法避免PowerShell ISE输出窗格中的文本换行。以下是截图示例。 以下屏幕截图是运行此命令的选项卡处于活动状态时的输出。 (点击图片放大) 下面的屏幕截图是运行此命令的选项卡未激活时的输出。 我试图用一个-nonewline标志将输出传递给Write-Host ,但这似乎将所有行合并为单行,所以这对我没有帮助。我也尝试将$ Host.UI.RawUI.BufferSize.Width设置为 500,但这似乎对我没有帮助。任何人都可以帮我找出问题是什么以及如何解决它?


2
从MS SQL服务器导出数据的更好方法
[TL:DR]我需要能够使用* Latin1编码的预定格式将ad-hoc数据从MS SQL Server数据库导出到本地计算机上的文件。我不确定SSMS是否有办法创建工作流,或者是否有PowerShell脚本解决方案,但遗憾的是我无法出于各种原因使用SSIS。 更长的故事 我经常从各种MS SQL Server实例上的一堆表中提取数据,并且所有这些实例都在运行各种版本的SQL Server,从2008年到2016年。导出数据后,我使用它来构建使用SSIS包设置的不同测试环境。 我通常使用SSMS 2016连接到SQL Server,然后使用“导出数据”向导。由于需要使用此方法手动单击各种选项,因此不是非常有效,并且由于所有手动点击方面而且此错误正在此级别进行并且直到需要,分析等数据 我想要一种方法来制作这个过程我试图解释更有效,并自动化更少的手动人工步骤。我尝试使用PowerShell(和SQLPS)方法,看起来非常慢,导出文件的编码并不是真的正确。我使用旧的DB和旧的SSIS包,并将所有这些转换为UTF8似乎非常混乱,所以我绝对需要输出ANSI1252(Latin 1)编码。 那里的任何专家都有一些很好的建议可以帮助我吗?

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.