小编Mat*_*att的帖子

如果/ ElseIf阻止不使用-or

我正在为我儿子写的剧本有问题.我的意图是提醒他记住他的家务.我刚刚开始做PowerShell,我真的非常喜欢它.我已经买了几本书,还经历了很多其他的帖子.

到目前为止我所得到的是,似乎评估不能正常使用-or (或者我可能会这么做?)

    ## REMINDERS TO DO CHORES ##

$sun = "Sunday"
$mon = "Monday"
$tue = "Tuesday"
$wed = "Wednesday"
$thu = "Thursday"
$fri = "Friday"
$sat = "Saturday"

$today = (get-date).DayOfWeek

$choreVac = "Vacuum the rooms and stairs"
$choreBath = "Clean the Bathroom Including emptying the garbage"
$choreOther = "No Chores Today -- But keep dishes done up"


if($today -eq $mon -or $wed -or $fri) {
msg /time:2500 * "Today is a Chore Day:  your job is …
Run Code Online (Sandbox Code Playgroud)

powershell powershell-ise windows-10 powershell-5.0

3
推荐指数
1
解决办法
155
查看次数

同一线路上的回显输出

我正在尝试使用 bash 脚本中的 echo 命令在同一行上打印输出。Echo 命令在循环内给出,每次循环运行时,都会执行 echo 命令。但通常情况下,echo 每次执行时都会换行,但我希望每次执行时输出都在同一行。

这就是我的示例小代码的样子:

 #!/bin/bash
loop=1;
while [ $loop -lt 5 ];
do
echo "-"
let loop=loop+1
done
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 echo 命令的 -n 选项,但没有输出。我将 stmt - echo "-" 替换为 echo -n "-"。

所需的输出是:“-----”

有人可以帮我解决这个问题吗

bash shell

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

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万
查看次数

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
查看次数

为什么 [datetime] 正确转换了这个 UTC 时间以及如何使用 ParseExact 复制它

我觉得自己很愚蠢,我自己无法解决这个问题。

我有来自 CarbonBlack API 的日期,例如 2022-02-15-172040,采用 UTC 格式

[datetime]如果我删除字符串的秒部分,类型转换工作正常

PS M:\Scripts> [datetime]"2022-02-15-1720"   
Tuesday, February 15, 2022 12:20:00 PM
Run Code Online (Sandbox Code Playgroud)

我不明白它如何“知道”这是一个 UTC 字符串。这当然是正确的,但我预计时间部分是下午 5:20。我想要日期的秒数,所以我去精确解析,因为据我所知,这与任何格式字符串都不匹配

PS M:\Scripts> [datetime]::ParseExact("2022-02-15-172040", "yyyy-MM-dd-HHmmss" ,[Globalization.CultureInfo]::CurrentUICulture)
Tuesday, February 15, 2022 5:20:40 PM
Run Code Online (Sandbox Code Playgroud)

这是我预期的时间,但时间不正确。

为什么[datetime]它在我不希望的情况下工作?我需要对字符串或静态方法调用执行什么操作才能将其视为 UTC 字符串并进行最少的操作?

powershell datetime utc powershell-5.1

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