小编Mat*_*att的帖子

Powershell - 列出子目录并计算每个子目录的文件数

我有一个充满子目录的目录,其中包含任意数量的 0 到 300 个文件。

我想输出子目录名称和该子目录中的文件数

到目前为止,无论子目录中有多少实际文件,我所得到的都是 0。

$dir = "C:\Folder\" 
$subFiles = (Get-ChildItem $dir -recurse | where-object {$_.PSIsContainer -eq $true })
$subFiles | % {
Get-ChildItem -Path $_ -Force -Recurse | Measure-Object | Select-Object -ExpandProperty Count
write-host "$_"
}
Run Code Online (Sandbox Code Playgroud)

有时它还包括运行脚本的目录,即“C:\Users\Blah\documents and settings\startmen”并导致错误。

任何帮助都非常感谢,谢谢

directory powershell file powershell-ise powershell-3.0

2
推荐指数
1
解决办法
2万
查看次数

按导入CSV的最大数值值排序对象

我想要文件顶部的最大值(mailboxSize).我有一个cvs作为inport.

当我执行以下排序cmd时:

Import-Csv import.csv| Sort-Object MailboxSize,DisplayName -Descending | Export-Csv SORT.csv
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

"DisplayName","MailboxSize"

"persone6","9941"
"persone3","8484"
"persone1","7008"
"persone4","4322"
"persone5","3106"
"persone7","27536"
"persone10","24253"
"persone8","1961"
"persone9","17076"
"persone11","17012"
"persone2","15351"
"persone12","11795"
"persone14","1156"
"persone13","1008"
Run Code Online (Sandbox Code Playgroud)

但是我希望这样做!

"persone7","27536"
"persone10","24253"
"persone9","17076"
"persone11","17012"
"persone2","15351"
"persone12","11795"
"persone6","9941"
"persone3","8484"
"persone1","7008"
"persone4","4322"
"persone5","3106"
"persone14","1156"
"persone13","1008"
Run Code Online (Sandbox Code Playgroud)

powershell exchange-server powershell-2.0 exchange-server-2010

2
推荐指数
1
解决办法
3402
查看次数

查找并替换特殊字符powershell

我有一个方法,如果找到一个特殊字符,它会捕获一个if语句.如果找到特殊字符的位置并将其替换为_A,我现在想做什么

一些例子

  • test#成为 test_A

  • 我#希望#某人#this #the#answer#成为 I_Ahope_Asomeone_Aknows_Athe_Aanswer_A

或者如果它有多个特殊字符

  • 你?没有#理解{我的?问题#成为 You_Adidnt_Aunderstand_Amy_AQuestion_A

我是否必须遍历整个字符串,当我到达该字符时将其更改为_A或是否有更快的方法来执行此操作?

powershell

2
推荐指数
1
解决办法
4万
查看次数

gwmi和Get-WmiObject之间关系的本质是什么

看完之后,我对这些之间的关系感到困惑.我不相信gwmi是一个纯粹的别名Get-WmiObject,因为他们似乎在我看到的例子中有相似但不完全相同的语法.

有趣的是,当我单独google"gwmi"时,所有顶级参考文献都会立即回复 Get-WmiObject,但似乎并未引用gwmi自己.

powershell

2
推荐指数
1
解决办法
1452
查看次数

未永久加载的模块

我正在尝试运行一个使用Start-BitsTransfer. 但是,每当我打开 Powershell 时,我每次都必须重新安装该BitsTransfer模块。这也意味着我无法运行调用 Powershell 来运行命令的脚本,因为该模块认为它没有安装。

示例图像在这里

powershell module

2
推荐指数
1
解决办法
2469
查看次数

-in 运算符在 2.0 版中不起作用?

我有以下代码行在 powershell 3.0 中工作

$Type = "DD"
if ($Type -in "AA","BB","CC") {Write-Host  "Type = $Type" -ForegroundColor Yellow }
Run Code Online (Sandbox Code Playgroud)

但是,使用 PowerShell 2.0 运行时出现错误

- : You must provide a value expression on the right-hand side of the '-' operator.
    + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpectedValueExpression
Run Code Online (Sandbox Code Playgroud)

为什么呢?我该如何解决?

powershell powershell-2.0

2
推荐指数
1
解决办法
1198
查看次数

在Get-ADGroup中格式化Members属性

我有一个以下PowerShell命令,它对我有用,给我我需要的结果(有关AD组及其成员的详细信息)

Get-ADGroup -Filter * -Properties * -SearchBase "CN=Users,DC=domain,DC=com" | 
    Select-Object -Property Name, Description, GroupCategory, Members | 
    Format-Table -AutoSize
Run Code Online (Sandbox Code Playgroud)

但我想格式化Members属性只显示DisplayName用户,而不是他的整个LDAP路径.

Members属性的输出是:

{CN=John Doe,CN=Users,DC=domain,DC=com, CN=Jane Doe,CN=Users, DC=domain, DC=com,...}
Run Code Online (Sandbox Code Playgroud)

powershell active-directory

2
推荐指数
1
解决办法
3009
查看次数

检查用户是否具有读/写权限

我给了用户域\名称,密码和路径,我想显示给定用户是否在给定目录中具有写入和/或读取访问权限.

大概的概念:

function Has-Read-Access {
    param(
        [Parameter(Mandatory=$true)][string]$userLogin
        [Parameter(Mandatory=$true)][string]$userPwd
        [Parameter(Mandatory=$true)][string]$directory
    )
    $hasReadAccess = 0
    #insert magic here
    return $hasReadAccess
}

Has-Read-Access -userLogin 'DOMAIN\user' -userPwd 'Passw0rd' -directory 'C:\FolderName\'
Run Code Online (Sandbox Code Playgroud)

我尝试过powershell.exe不同的用户运行:

Start-Process powershell.exe -Credential "TestDomain\Me"
Run Code Online (Sandbox Code Playgroud)

但这似乎是一种错误的做法.

windows powershell file-permissions

2
推荐指数
1
解决办法
4289
查看次数

使用Invoke-Command时,Try&Catch无法正常工作

我的脚本中有一个奇怪的问题.我正在某些服务器上调用命令.如果我无法连接到服务器(因为它是脱机的或其他东西)我仍然想记录(服务器脱机> log.txt)

显然,当Try块中发生错误时,Catch不执行该块.

为了测试这个,我给ComputerName不存在的参数写了一个值.这是我的代码:

Try {
    Invoke-Command -ComputerName hui -ScriptBlock $sb
}
Catch {
    Write-Host "Hello"
}
Run Code Online (Sandbox Code Playgroud)

但是脚本从未发出"你好"

我得到的例外是PSRemotingTransportException.我也试着指定异常,也没用

当我在该Invoke-Command行设置断点时,它也会忽略catch块.为什么?

powershell try-catch

2
推荐指数
1
解决办法
3258
查看次数

如果语句永远不会评估为false

我正在研究的脚本的另一个业余问题.我在If声明中退出脚本和控制台时遇到问题.

我已经试过exit,exit(),$host.exit[Environment]::Exit(1)我的内Else部分.无论用户输入是什么,if语句都会继续.

我觉得我错过了一些非常简单的东西,但我无法理解.如果用户输入"Y"或"y",我只希望它继续.还有别的什么我只想让它失败并关闭......

我也在$confirm用户输入后调用,确保它正在捕获正确的字母,这是.

以下是脚本失败的部分:

$confirm = Read-Host "Continue deletion? [Y/N]"

if ($confirm -eq "Y" -or "y") {
    for ($i = 0; $i -le 4; $i++) {
        Get-ChildItem -Path $path0, $path1 -Filter "$dval*"| 
        % { Write-Host 'Deleting' $_.FullName $dval; Remove-Item $_.FullName -Recurse }
        $dval++ } 

} else { [Environment]::Exit(1) }
Run Code Online (Sandbox Code Playgroud)

powershell if-statement

2
推荐指数
1
解决办法
45
查看次数