标签: powershell

通过 PowerShell 更新 Azure AD 用户的 companyName 属性

背景

我有一个电子邮件系统(CodeTwo),它使用 AD 属性为用户自动创建签名。我的许多用户在本地 AD 和 Office 365 / AAD 之间同步,但较新的用户仅是云用户,也就是说,它们是在 Office 365 管理门户中创建的,不与本地用户同步。

问题

我正在使用该属性,该属性可以通过 Windows 管理工具Active Directory 用户和计算机companyName的属性对话框轻松设置。我已设置Azure AD Connect以在同步中包含此属性。对于我的同步用户,此设置按预期工作 - 使用类似命令,我可以看到或属性设置正确。然而,对于仅使用云的用户,该值始终为空。Get-CsOnleUserGet-AzureADUserCompanyCompanyName

我找不到设置此值的方法 - 该属性要么是只读的,要么更改属性的值并使用Set-CsUserSet-AzureADUser没有效果。

我注意到我们有一些 AD 扩展属性,特别是一个名为extension_0000000000000000000000000000000_company- 我可以为云用户设置此属性,但它似乎不会影响从上面的查询返回的对象。同样,签名盖章系统也不会拾取它。

问题

如何companyName在 Azure AD / Office 365 中设置用户属性?最好使用 PowerShell,但现阶段是否愿意接受任何选项?

powershell office365 entra-id

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

PowerShell Get-ChildItem - 路径太长

我一直在尝试格式化命令的输出表Get-ChildItem

我创建了一个脚本来扫描 中 定义的目录,$Source以搜索$Months和定义的文件$Size。这工作正常,但某些目录的长度超过 248 个字符,并且我收到文件路径太长错误。

所以我想$Source在输出到表中的目录列时不包含路径。

例如我想看到这个:

| file1.csv | Last Write Access | .\Desktop\Folder1 |  
| file2.txt | Last Write Access | .\Desktop\Folder2 |
Run Code Online (Sandbox Code Playgroud)

当 $Source 定义为C:\users\User1

这是我当前的代码:

| file1.csv | Last Write Access | .\Desktop\Folder1 |  
| file2.txt | Last Write Access | .\Desktop\Folder2 |
Run Code Online (Sandbox Code Playgroud)

powershell path

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

如何在powershell函数中嵌入用户输入?

我正在创建一个具有多种功能的 power-shell 模块,其中一个需要在运行过程中进行用户输入。如何使用函数来请求输入而不将其作为参数提供?甚至有可能吗?

powershell credentials windows-server-2016

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

无法使用 powershell 自定义日期从某个日期获得年数的差异?

我无法使用 Powershell 从某个日期获得时差,如下所示:

$Date = '11/12/2001'
(New-TimeSpan -Start (Get-Date -Date $Date) -End (Get-Date)).ToString("'yyyy' Years 'MM' Months 'dd' Days 'hh' Hours 'mm' Minutes 'ss' Seconds'")
Run Code Online (Sandbox Code Playgroud)

错误:

Exception calling "ToString" with "1" argument(s): "Input string was not in a correct format." 
At line:2 char:1 
+ (New-TimeSpan -Start (Get-Date -Date $Date) -End (Get-Date)).ToString ... 
Run Code Online (Sandbox Code Playgroud)

为什么我不能得到年和月的过去?

powershell powershell-v7

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

我可以创建一个策略来在特定时间禁用计算机或用户吗?

Windows 域。
我们在 5 点关门。
我被要求在 5:15 禁用某些计算机/用户。

我知道如何在小时内限制对文件系统的访问,但是
a) 没有提供足够的宽限时间或太多,并且
b) 没有足够的限制,它只会削弱

windows powershell group-policy windows-server-2012-r2

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

用于写入打印机名称的 PowerShell 脚本

我有一个 PowerShell 脚本。这:

Get-Printer | ft name,portname,location | Export-Csv c:\intel\intvprint2.csv -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)

但这没有任何好处:(我制作了脚本,但结果是文件错误数据。

这使得:

"ClassId2e4f51ef21dd47e99d3c952918aff9cd","pageHeaderEntry","pageFooterEntry","autosizeInfo","shapeInfo","groupingEntry"
"033ecb2bc07a4d43b5ef94ed5a35d280",,,,"Microsoft.PowerShell.Commands.Internal.Format.TableHeaderInfo",
"9e210fe47d09416682b841769c78b8a3",,,,,
"27c87ef9bbda4f709f6b4002fa4af63c",,,,,
Run Code Online (Sandbox Code Playgroud)

但现在看到这个:

Get-Printer | ft name,portname,location

name                          portname               location
----                          --------               --------
9620HP2055DN                  172.17.252.130         loc1
9590HP2055DN                  172.17.239.45          loc2
Run Code Online (Sandbox Code Playgroud)

为什么剧本不好?

windows powershell

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

无法在我的 Vista x64 机器上安装 PowerShell 2

帮助!

我正在尝试在我的主机上安装 PowerShell 2。它运行的是 Vista x64 家庭高级版。我正在使用具有管理员权限的帐户运行。

我试过在超级用户上问这个问题,但迄今为止没有答案。

这是我到目前为止所做的:

  • 下载 Windows 管理框架核心包
  • 运行安装
  • 收到消息:“更新不适用于您的系统”
  • 用谷歌搜索这个问题,发现我必须先卸载PowerShell 1
  • 卸载 PowerShell 1 并重新启动。
  • 重新运行 WMF 安装程序,并得到“更新不适用于您的系统”
  • 谷歌一些没有那么有用的结果
  • 在 ServerFault 上提问,没有回复/答案

这让我来到这里。任何想法可能会出错?

我还应该补充一点,我还没有在我的系统上安装 Vista x64 SP1。自动更新尝试安装 SP1,但失败,没有特定的错误消息。由于我的系统在没有 SP1 的情况下工作,而且我正在等待我的下一台机器(将运行 Win7),所以我并不特别倾向于安装 SP1。

powershell

0
推荐指数
1
解决办法
933
查看次数

使用 powershell 的 export-csv 导出特定字段

我正在尝试使用 Powershell 从 Active Directory 2003 导出一些用户信息的列表。

到目前为止,我可以使用以下内容显示特定的属性列表:

if ( (Get-PSSnapin -Name Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue) -eq $null )
{
    Add-PsSnapin Quest.ActiveRoles.ADManagement
}

get-qaduser -company "Company","Consultant" `
    -enabled -DontUseDefaultIncludedProperties -IncludedProperties 'givenName','sn','telephoneNumber','mail','company' `
    | sort-object `
    | format-table givenname,sn,company,telephonenumber,mail `
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试将输出通过管道传输到 export-csv,而不是 format-table,我将获得每个域对象的所有属性。

如果我执行以下操作:

    | format-table givenname,sn,company,telephonenumber,mail `
    | export-csv -Delimiter `t -NoTypeInformation -Path c:\scripts\adexport.csv
Run Code Online (Sandbox Code Playgroud)

我得到了没有数据的正确行数,除了一些标识符(这是有道理的 - 因为对象没有被传递到 export-csv,只是一行文本)。

如何将特定字段导出到文件?

我正在使用 Quest 的 ActiveDirectory powershell CMDLET ( http://www.quest.com/powershell/activeroles-server.aspx ) 从 AD 获取数据。

powershell active-directory

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

PowerShell - 在每个目录中输入 no 并打开 notepad2

你知道notepadPowerShell或cmd.exe中的命令吗?我想对NotePad2做同样的事情我想在 PowerShell 中键入以下命令并打开 me.txt 文件;

PS C:\Apps> no -me
Run Code Online (Sandbox Code Playgroud)

我该如何配置?

powershell command-line-interface windows-command-prompt

0
推荐指数
1
解决办法
139
查看次数

如何在 PowerShell 控制台打开的情况下重新启动计算机

在 Windows XP 中运行的 PowerShell 2.0 中,我执行以下命令:

Restart-Computer
Run Code Online (Sandbox Code Playgroud)

并收到以下消息:

Windows 无法结束该程序。完成操作可能需要更多时间。

要返回 Windows 并检查程序状态,请单击取消。

如果您选择立即结束程序,您将丢失所有未保存的数据。要立即结束程序,请单击立即结束。

无论我是从 PowerShell 还是从 Windows 本身重新启动,都会发生这种情况。知道如何重新启动将在没有提示的情况下关闭 PowerShell 控制台的计算机吗?

powershell

0
推荐指数
1
解决办法
374
查看次数