我有一个PowerShell脚本,它使用du.exe(最初来自Sysinternals的磁盘使用情况)来计算目录的大小.
如果我du c:\Backup
在控制台中运行,它按预期工作,但在ISE或PowerGui中运行的相同代码行给出了预期的结果加上错误
+ du <<<< c:\backup
+ CategoryInfo : NotSpecified: (:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Run Code Online (Sandbox Code Playgroud)
这是为什么?如何避免此错误?我尝试使用invoke-expression &
,但是没有去.
谢谢您的帮助.
我正在尝试从powershell命令获取输出.但是输出被截断.
[PS] >Get-QADGroup "admins"
Name Type DN
---- ---- --
Admins group CN=Admins,OU=Profiles,OU=Groups,OU=Sw...
Run Code Online (Sandbox Code Playgroud)
我怎么告诉这个shell想要截断它的数据呢?
我在玩PowerShell,发现自己cls
在运行命令之前一直在打字。或者更糟的是,我运行了一个命令,意识到其他东西的输出使得导航、运行cls
和重新运行我的该死的命令变得很痛苦。有没有办法在运行每个命令之前清除上一个命令的输出?显然,如果这可以用命令或简单的东西来切换,那将是理想的,但无论如何都行。:) 另外,我在玩PS 3、ISE和PowerGUI。
我有一个包含在 exe 中的小型 PowerShell 脚本(使用 Quest Power GUI)。然后使用 mageUI.exe(即通过“ClickOnce”部署)将此 exe 部署到 UNC 路径。
现在,有一个命名空间可供我们使用:
这个命名空间允许我们确定该工具是否是网络部署的 + exe 的原始下载 URL/UNC。
所以我在我的 PowerShell 脚本中添加了以下几行(然后被 PowerGUI 编译成一个 exe)
# Line 1. Load the assembly
[System.Reflection.Assembly]::LoadWithPartialName("System.Deployment")
# Line 2. Utilise methods in the assembly. Below line will give either false or true, depending if the caller is deployed as a 'ClickOnce' app.
[System.Deployment.Application.ApplicationDeployment]::IsNetworkDeployed
Run Code Online (Sandbox Code Playgroud)
将此 exe 发布为“ClickOnce”应用程序(使用 mageUI.exe),将其放在网络共享上,然后从其他服务器(可以访问先前所说的共享)执行后,我仍然得到以下输出:
# Output of Line 1 (This signifies the assembly was loaded successfully)
GAC Version Location
--- …
Run Code Online (Sandbox Code Playgroud) 我想捕获并处理非终止错误,但使用-ErrorAction SilentlyContiune.我知道我需要使用-ErrorAction Stop来捕获非终止错误.该方法的问题在于我不希望try脚本块中的代码实际停止.我希望它继续但处理非终止错误.我也希望它保持沉默.这可能吗?也许我会以错误的方式解决这个问题.
我想要处理的非终止错误的一个示例是来自Get-Childitem的关键字文件夹的访问被拒绝错误.这是一个例子.
$getPST = Get-ChildItem C:\ -Recurse -File -Filter "*.PST"
$pstSize = @()
Foreach ($pst in $getPST)
{
If((Get-Acl $pst.FullName).Owner -like "*$ENV:USERNAME")
{
$pstSum = $pst | Measure-Object -Property Length -Sum
$size = "{0:N2}" -f ($pstSum.Sum / 1Kb)
$pstSize += $size
}
}
$totalSize = "{0:N2}" -f (($pstSize | Measure-Object -Sum).Sum / 1Kb)
Run Code Online (Sandbox Code Playgroud) 当我通过Windows资源管理器上下文菜单中的“使用PowerGUI脚本编辑器打开”打开任何.ps1时,PowerGUI首先运行该脚本,然后让我对其进行编辑。这是设计使然吗?
如果运行PowerGUI脚本编辑器,则通过File | File 打开。打开,它不会运行,并让我立即对其进行编辑(期望的行为)。
我如何:1)阻止PowerGUI编辑器在打开时首先运行脚本,以及2)使用命令行参数执行相同操作(以将PowerGUI用作帮助应用程序)?
谢谢!
当我执行命令时:
$var = @{a=1;b=2}
Run Code Online (Sandbox Code Playgroud)
在 Powershell(版本 3)中,$var
最终的值为{System.Collections.DictionaryEntry, System.Collections.DictionaryEntry}
. 为什么会这样?如何存储我想要存储的值?
我使用 PowerGUI 来编辑我的脚本。在 Visual Studio 中,我可以从项目属性添加命令行参数。但是,我找不到一种方法来设置 UI 参数以使用指定的 $args 调试我的代码。
例如,我在 PowerGUI 中设置了一个调试点,即启动代码的第一行。然后我尝试使用一些参数从 UI 面板“PowerShell Console”启动我的脚本(这是我想我可以传递参数来运行脚本的一种方式)。该脚本运行时不会在我的调试点停止。PowerGUI中有什么可用的方法吗?
我试图在PowerGui 3.0中点源脚本文件,但我得到的只是;
术语".\ PowerShell.Common.ps1"未被识别为cmdlet,函数,脚本文件或可操作程序的名称.检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试.在D:\ TFS\SharePoint\Dev\Deploy\AutoSPInstaller\SP2010\AutoSPInstaller\AutoSPInstallerFunctionsCustom.ps1:6 char:31 +.\.PowerShell.Common.ps1 <<<< + CategoryInfo:ObjectNotFound:(.\ PowerShell.Common. ps1:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException
并且powerGui随后不在所述文件中提供我的脚本功能 - 在父脚本的上下文敏感列表中.
文件"PowerShell.Common.ps1"与AutoSPInstallerFunctionsCustom.ps1位于同一目录中.感谢您的帮助