Большая часть механики позади этой тайны является подменой NAT:
например, Ваш ПК находится на частной сети с IP 10.1.2.3.
Ваш маршрутизатор помнит IP/порт ПК, и что он инициализировал соединение с удаленным IP/портом (WAN). Таким образом, когда существует ответ на тот же канал, маршрутизатор вперед поддерживают пакет к ПК, на его стороне локальной сети.
В этом случае устройство расширения инициализирует соединение, и таким образом маршрутизатор не знает, к которому 10.x.x.x клиент это, как предполагается, передает пакет.
Поэтому маршрутизатору нужны определенные настройки, который говорит, например, если Ваш ПК, оказывается, веб-сервер (http порт)
HTTP (WAN) ==> (LAN) 10.1.2.3:80
это говорит, пакеты, прибывающие в порт HTTP, переходят к внутреннему адресу локальной сети 10.1.2.3 (Ваш ПК) на порте 80.
Небольшое исправление для поддержки новейшие командлеты:
$lines = @() foreach($msolUser in (Get-MSOLUser -All)) {
$UserInfo = Get-MSOLUser -UserPrincipalName $msolUser.UserPrincipalName
foreach($license in $msolUser.Licenses)
{
$lines += New-Object PsObject -Property @{
"Username"="$($UserInfo.DisplayName)";
"Company"="$($UserInfo.Company)";
"AccountSKUID"="$($license.AccountSKUid)"
}
} } $lines | Export-CSV C:\output.csv -NoTypeInformation
У меня это отлично сработало.
В первом примере вы выбираете свойство AccountSkuId
, а во втором - AccountSKU.SkuPartNumber
(которого, я почти уверен, не существует).
Ваш сценарий / однострочный текст тоже не так легко читать, как насчет этого:
$lines = @()
foreach($msolUser in (Get-MSOLUser))
{
$UserInfo = Get-User -Identity $msolUser.UserPrincipalName
foreach($license in $msolUser.Licenses)
{
$lines += @{
"Username"="$($UserInfo.DisplayName)";
"Company"="$($UserInfo.Company)";
"AccountSKUID"="$($license.AccountSKUid)"
}
}
}
$lines | Export-CSV C:\output.csv -NoTypeInformation
Намного проще получить обзор и поддерживать .
Ова ќе ги извезува лиценцираните корисници со тип на лиценца
Get-MsolUser -All |
Where {$_.IsLicensed -eq $true } |
Select DisplayName,UsageLocation,@{n="Licenses Type";e={$_.Licenses.AccountSKUid}},SignInName,UserPrincipalName,@{n="ProxyAddresses";e={$_.ProxyAddresses}} |
Export-Csv -Path C:\_Cory\Test.csv -NoTypeInformation
Этот сценарий отлично работал у меня, но я не мог заставить его экспортировать напрямую в CSV, поэтому я использовал копирование / вставку из в Excel.
Get-MsolUser -all | Where-Object {$_.isLicensed -eq "True"} | Select UserPrincipalName,DisplayName,Licenses | Out-GridView
Так как вы не знаете PowerShell или сценарии, вам следует автоматизировать весь процесс PowerShell Export log с помощью стандартных инструментов Windows. Есть много сторонних инструментов, которые могут помочь. попробуйте поискать их. это облегчит вашу работу
Ndikhe ndakuvavanya oku kwaye KUPHELELE ENKOSI KAKHULU NGONCEDO LAKHO!
$lines = @()
foreach($msolUser in (Get-MSOLUser -ALL | where {$_.isLicensed -eq $true}))
{
$UserInfo = Get-User -identity $msolUser.UserPrincipalName
foreach($license in $msolUser.Licenses)
{
$lines += New-Object PsObject -Property @{
"Nom/Prenom"="$($UserInfo.DisplayName)";
"Societe"="$($UserInfo.Company)";
"AdressePrincipale"="$($UserInfo.UserPrincipalName)";
"Licences"="$($license.AccountSKUid)"
}
}
}
$lines | Export-CSV C:\out1.csv -Delimiter ";" -Encoding Unicode